diff options
author | Paul Mundt <lethal@linux-sh.org> | 2009-09-16 01:30:34 -0400 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2009-09-16 01:30:34 -0400 |
commit | a74f7e0410da9da7942cf4f08bbdb0e4fc76f972 (patch) | |
tree | 8c45d67e75ecf44a274951c2f6a6a2ee1c79a84c /arch/sh/kernel/ptrace_64.c | |
parent | ea88023b3491a384575ebcd5e8a449e841a28a24 (diff) |
sh: Wire up HAVE_SYSCALL_TRACEPOINTS.
This is necessary to get ftrace syscall tracing working again.. a fairly
trivial and mechanical change. The one benefit is that this can also be
enabled on sh64, despite not having its own ftrace port.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh/kernel/ptrace_64.c')
-rw-r--r-- | arch/sh/kernel/ptrace_64.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/arch/sh/kernel/ptrace_64.c b/arch/sh/kernel/ptrace_64.c index 695097438f02..952da83903da 100644 --- a/arch/sh/kernel/ptrace_64.c +++ b/arch/sh/kernel/ptrace_64.c | |||
@@ -40,6 +40,9 @@ | |||
40 | #include <asm/syscalls.h> | 40 | #include <asm/syscalls.h> |
41 | #include <asm/fpu.h> | 41 | #include <asm/fpu.h> |
42 | 42 | ||
43 | #define CREATE_TRACE_POINTS | ||
44 | #include <trace/events/syscalls.h> | ||
45 | |||
43 | /* This mask defines the bits of the SR which the user is not allowed to | 46 | /* This mask defines the bits of the SR which the user is not allowed to |
44 | change, which are everything except S, Q, M, PR, SZ, FR. */ | 47 | change, which are everything except S, Q, M, PR, SZ, FR. */ |
45 | #define SR_MASK (0xffff8cfd) | 48 | #define SR_MASK (0xffff8cfd) |
@@ -438,6 +441,9 @@ asmlinkage long long do_syscall_trace_enter(struct pt_regs *regs) | |||
438 | */ | 441 | */ |
439 | ret = -1LL; | 442 | ret = -1LL; |
440 | 443 | ||
444 | if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT))) | ||
445 | trace_sys_enter(regs, regs->regs[9]); | ||
446 | |||
441 | if (unlikely(current->audit_context)) | 447 | if (unlikely(current->audit_context)) |
442 | audit_syscall_entry(audit_arch(), regs->regs[1], | 448 | audit_syscall_entry(audit_arch(), regs->regs[1], |
443 | regs->regs[2], regs->regs[3], | 449 | regs->regs[2], regs->regs[3], |
@@ -452,6 +458,9 @@ asmlinkage void do_syscall_trace_leave(struct pt_regs *regs) | |||
452 | audit_syscall_exit(AUDITSC_RESULT(regs->regs[9]), | 458 | audit_syscall_exit(AUDITSC_RESULT(regs->regs[9]), |
453 | regs->regs[9]); | 459 | regs->regs[9]); |
454 | 460 | ||
461 | if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT))) | ||
462 | trace_sys_exit(regs, regs->regs[9]); | ||
463 | |||
455 | if (test_thread_flag(TIF_SYSCALL_TRACE)) | 464 | if (test_thread_flag(TIF_SYSCALL_TRACE)) |
456 | tracehook_report_syscall_exit(regs, 0); | 465 | tracehook_report_syscall_exit(regs, 0); |
457 | } | 466 | } |