diff options
author | davidxu <davidxu@FreeBSD.org> | 2004-07-13 07:22:56 +0000 |
---|---|---|
committer | davidxu <davidxu@FreeBSD.org> | 2004-07-13 07:22:56 +0000 |
commit | 0a29616acf6f4bc7e940a58de1e9ef27a2b2191c (patch) | |
tree | e1ecc998f02711a0013b59d58ed0909c9107eec1 | |
parent | 1920ad199e7dd23d7b308c9caa9ed999e2947329 (diff) | |
download | FreeBSD-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.c | 7 | ||||
-rw-r--r-- | sys/i386/i386/machdep.c | 7 | ||||
-rw-r--r-- | sys/ia64/ia64/machdep.c | 8 | ||||
-rw-r--r-- | sys/pc98/i386/machdep.c | 7 | ||||
-rw-r--r-- | sys/pc98/pc98/machdep.c | 7 | ||||
-rw-r--r-- | sys/powerpc/aim/machdep.c | 8 | ||||
-rw-r--r-- | sys/powerpc/powerpc/machdep.c | 8 | ||||
-rw-r--r-- | sys/sparc64/sparc64/machdep.c | 7 |
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) { |