diff options
author | Paul Mundt <lethal@linux-sh.org> | 2011-05-31 01:39:49 -0400 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2011-05-31 01:39:49 -0400 |
commit | db7eba292e913390fa881272bfbc3da0a5380513 (patch) | |
tree | e3c0142c985e92a510abcc2d867da4d9eacd0a3e /arch/sh/include/asm/ptrace.h | |
parent | 3f9b8520b06013939ad247ba08b69529b5f14be1 (diff) |
sh: Fix up asm-generic/ptrace.h fallout.
There was an ordering issue with regards to instruction_pointer() being
used in profile_pc() prior to the asm-generic/ptrace.h include, which
subsequently provided the instruction_pointer() definition. In the
interest of simplicity we simply open-code the regs->pc deref for the
profile_pc() definition instead.
The FP functions were also broken due to a lack of a common regs->fp,
so provide a common GET_FP() that is safe for both architectures in order
to fix up the frame pointer helpers too.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh/include/asm/ptrace.h')
-rw-r--r-- | arch/sh/include/asm/ptrace.h | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/sh/include/asm/ptrace.h b/arch/sh/include/asm/ptrace.h index 40725b4a8018..88bd6be168a9 100644 --- a/arch/sh/include/asm/ptrace.h +++ b/arch/sh/include/asm/ptrace.h | |||
@@ -41,7 +41,9 @@ | |||
41 | 41 | ||
42 | #define user_mode(regs) (((regs)->sr & 0x40000000)==0) | 42 | #define user_mode(regs) (((regs)->sr & 0x40000000)==0) |
43 | #define kernel_stack_pointer(_regs) ((unsigned long)(_regs)->regs[15]) | 43 | #define kernel_stack_pointer(_regs) ((unsigned long)(_regs)->regs[15]) |
44 | #define GET_USP(regs) ((regs)->regs[15]) | 44 | |
45 | #define GET_FP(regs) ((regs)->regs[14]) | ||
46 | #define GET_USP(regs) ((regs)->regs[15]) | ||
45 | 47 | ||
46 | extern void show_regs(struct pt_regs *); | 48 | extern void show_regs(struct pt_regs *); |
47 | 49 | ||
@@ -131,7 +133,7 @@ extern void ptrace_triggered(struct perf_event *bp, int nmi, | |||
131 | 133 | ||
132 | static inline unsigned long profile_pc(struct pt_regs *regs) | 134 | static inline unsigned long profile_pc(struct pt_regs *regs) |
133 | { | 135 | { |
134 | unsigned long pc = instruction_pointer(regs); | 136 | unsigned long pc = regs->pc; |
135 | 137 | ||
136 | if (virt_addr_uncached(pc)) | 138 | if (virt_addr_uncached(pc)) |
137 | return CAC_ADDR(pc); | 139 | return CAC_ADDR(pc); |