aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorDavid Xu <davidxu@FreeBSD.org>2004-07-13 07:22:56 +0000
committerDavid Xu <davidxu@FreeBSD.org>2004-07-13 07:22:56 +0000
commit53dbf303491f486ef2c376e6330280cf2bd2d162 (patch)
treee1ecc998f02711a0013b59d58ed0909c9107eec1 /sys
parentcbf4e354ec2e443527cf031282f960cd0fd1a7ad (diff)
downloadsrc-53dbf303491f486ef2c376e6330280cf2bd2d162.tar.gz
src-53dbf303491f486ef2c376e6330280cf2bd2d162.zip
Add ptrace_clear_single_step(), alpha already has it for years, the function
will be used by ptrace to clear a thread's single step state.
Notes
Notes: svn path=/head/; revision=132088
Diffstat (limited to 'sys')
-rw-r--r--sys/amd64/amd64/machdep.c7
-rw-r--r--sys/i386/i386/machdep.c7
-rw-r--r--sys/ia64/ia64/machdep.c8
-rw-r--r--sys/pc98/i386/machdep.c7
-rw-r--r--sys/pc98/pc98/machdep.c7
-rw-r--r--sys/powerpc/aim/machdep.c8
-rw-r--r--sys/powerpc/powerpc/machdep.c8
-rw-r--r--sys/sparc64/sparc64/machdep.c7
8 files changed, 59 insertions, 0 deletions
diff --git a/sys/amd64/amd64/machdep.c b/sys/amd64/amd64/machdep.c
index bfd0edc7b7ed..b95c211ad1c2 100644
--- a/sys/amd64/amd64/machdep.c
+++ b/sys/amd64/amd64/machdep.c
@@ -1303,6 +1303,13 @@ ptrace_single_step(struct thread *td)
}
int
+ptrace_clear_single_step(struct thread *td)
+{
+ td->td_frame->tf_rflags &= ~PSL_T;
+ return (0);
+}
+
+int
fill_regs(struct thread *td, struct reg *regs)
{
struct pcb *pcb;
diff --git a/sys/i386/i386/machdep.c b/sys/i386/i386/machdep.c
index a783e013f483..ec148fcd56ba 100644
--- a/sys/i386/i386/machdep.c
+++ b/sys/i386/i386/machdep.c
@@ -2252,6 +2252,13 @@ ptrace_single_step(struct thread *td)
}
int
+ptrace_clear_single_step(struct thread *td)
+{
+ td->td_frame->tf_eflags &= ~PSL_T;
+ return (0);
+}
+
+int
fill_regs(struct thread *td, struct reg *regs)
{
struct pcb *pcb;
diff --git a/sys/ia64/ia64/machdep.c b/sys/ia64/ia64/machdep.c
index 9fed902d1f40..1dfab47d2b8e 100644
--- a/sys/ia64/ia64/machdep.c
+++ b/sys/ia64/ia64/machdep.c
@@ -1255,6 +1255,14 @@ ptrace_single_step(struct thread *td)
}
int
+ptrace_clear_single_step(struct thread *td)
+{
+
+ td->td_frame->tf_special.psr &= ~IA64_PSR_SS;
+ return (0);
+}
+
+int
fill_regs(struct thread *td, struct reg *regs)
{
struct trapframe *tf;
diff --git a/sys/pc98/i386/machdep.c b/sys/pc98/i386/machdep.c
index 67e5f71f4f41..96576ee70863 100644
--- a/sys/pc98/i386/machdep.c
+++ b/sys/pc98/i386/machdep.c
@@ -2309,6 +2309,13 @@ ptrace_single_step(struct thread *td)
}
int
+ptrace_clear_single_step(struct thread *td)
+{
+ td->td_frame->tf_eflags &= ~PSL_T;
+ return (0);
+}
+
+int
fill_regs(struct thread *td, struct reg *regs)
{
struct pcb *pcb;
diff --git a/sys/pc98/pc98/machdep.c b/sys/pc98/pc98/machdep.c
index 67e5f71f4f41..96576ee70863 100644
--- a/sys/pc98/pc98/machdep.c
+++ b/sys/pc98/pc98/machdep.c
@@ -2309,6 +2309,13 @@ ptrace_single_step(struct thread *td)
}
int
+ptrace_clear_single_step(struct thread *td)
+{
+ td->td_frame->tf_eflags &= ~PSL_T;
+ return (0);
+}
+
+int
fill_regs(struct thread *td, struct reg *regs)
{
struct pcb *pcb;
diff --git a/sys/powerpc/aim/machdep.c b/sys/powerpc/aim/machdep.c
index 051a12138fdd..4c3199e211b8 100644
--- a/sys/powerpc/aim/machdep.c
+++ b/sys/powerpc/aim/machdep.c
@@ -820,6 +820,14 @@ ptrace_single_step(struct thread *td)
return (ENOSYS);
}
+int
+ptrace_clear_single_step(struct thread *td)
+{
+
+ /* XXX: coming soon... */
+ return (ENOSYS);
+}
+
/*
* Initialise a struct pcpu.
*/
diff --git a/sys/powerpc/powerpc/machdep.c b/sys/powerpc/powerpc/machdep.c
index 051a12138fdd..4c3199e211b8 100644
--- a/sys/powerpc/powerpc/machdep.c
+++ b/sys/powerpc/powerpc/machdep.c
@@ -820,6 +820,14 @@ ptrace_single_step(struct thread *td)
return (ENOSYS);
}
+int
+ptrace_clear_single_step(struct thread *td)
+{
+
+ /* XXX: coming soon... */
+ return (ENOSYS);
+}
+
/*
* Initialise a struct pcpu.
*/
diff --git a/sys/sparc64/sparc64/machdep.c b/sys/sparc64/sparc64/machdep.c
index 1671af43824f..73e6aa346c7c 100644
--- a/sys/sparc64/sparc64/machdep.c
+++ b/sys/sparc64/sparc64/machdep.c
@@ -711,6 +711,13 @@ ptrace_single_step(struct thread *td)
return (0);
}
+int
+ptrace_clear_single_step(struct thread *td)
+{
+ /* TODO; */
+ return (0);
+}
+
void
exec_setregs(struct thread *td, u_long entry, u_long stack, u_long ps_strings)
{