summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordavidxu <davidxu@FreeBSD.org>2004-07-13 07:22:56 +0000
committerdavidxu <davidxu@FreeBSD.org>2004-07-13 07:22:56 +0000
commit0a29616acf6f4bc7e940a58de1e9ef27a2b2191c (patch)
treee1ecc998f02711a0013b59d58ed0909c9107eec1
parent1920ad199e7dd23d7b308c9caa9ed999e2947329 (diff)
downloadFreeBSD-src-0a29616acf6f4bc7e940a58de1e9ef27a2b2191c.zip
FreeBSD-src-0a29616acf6f4bc7e940a58de1e9ef27a2b2191c.tar.gz
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.
-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 bfd0edc..b95c211 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 a783e01..ec148fc 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 9fed902..1dfab47 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 67e5f71..96576ee 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 67e5f71..96576ee 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 051a121..4c3199e 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 051a121..4c3199e 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 1671af4..73e6aa3 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)
{
OpenPOWER on IntegriCloud