diff options
Diffstat (limited to 'arch/arm/kernel')
| -rw-r--r-- | arch/arm/kernel/perf_event.c | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/arch/arm/kernel/perf_event.c b/arch/arm/kernel/perf_event.c index fdcb0be47df1..a07c3b1955f0 100644 --- a/arch/arm/kernel/perf_event.c +++ b/arch/arm/kernel/perf_event.c | |||
| @@ -3001,13 +3001,6 @@ arch_initcall(init_hw_perf_events); | |||
| 3001 | /* | 3001 | /* |
| 3002 | * Callchain handling code. | 3002 | * Callchain handling code. |
| 3003 | */ | 3003 | */ |
| 3004 | static inline void | ||
| 3005 | callchain_store(struct perf_callchain_entry *entry, | ||
| 3006 | u64 ip) | ||
| 3007 | { | ||
| 3008 | if (entry->nr < PERF_MAX_STACK_DEPTH) | ||
| 3009 | entry->ip[entry->nr++] = ip; | ||
| 3010 | } | ||
| 3011 | 3004 | ||
| 3012 | /* | 3005 | /* |
| 3013 | * The registers we're interested in are at the end of the variable | 3006 | * The registers we're interested in are at the end of the variable |
| @@ -3039,7 +3032,7 @@ user_backtrace(struct frame_tail *tail, | |||
| 3039 | if (__copy_from_user_inatomic(&buftail, tail, sizeof(buftail))) | 3032 | if (__copy_from_user_inatomic(&buftail, tail, sizeof(buftail))) |
| 3040 | return NULL; | 3033 | return NULL; |
| 3041 | 3034 | ||
| 3042 | callchain_store(entry, buftail.lr); | 3035 | perf_callchain_store(entry, buftail.lr); |
| 3043 | 3036 | ||
| 3044 | /* | 3037 | /* |
| 3045 | * Frame pointers should strictly progress back up the stack | 3038 | * Frame pointers should strictly progress back up the stack |
| @@ -3057,7 +3050,7 @@ perf_callchain_user(struct pt_regs *regs, | |||
| 3057 | { | 3050 | { |
| 3058 | struct frame_tail *tail; | 3051 | struct frame_tail *tail; |
| 3059 | 3052 | ||
| 3060 | callchain_store(entry, PERF_CONTEXT_USER); | 3053 | perf_callchain_store(entry, PERF_CONTEXT_USER); |
| 3061 | 3054 | ||
| 3062 | if (!user_mode(regs)) | 3055 | if (!user_mode(regs)) |
| 3063 | regs = task_pt_regs(current); | 3056 | regs = task_pt_regs(current); |
| @@ -3078,7 +3071,7 @@ callchain_trace(struct stackframe *fr, | |||
| 3078 | void *data) | 3071 | void *data) |
| 3079 | { | 3072 | { |
| 3080 | struct perf_callchain_entry *entry = data; | 3073 | struct perf_callchain_entry *entry = data; |
| 3081 | callchain_store(entry, fr->pc); | 3074 | perf_callchain_store(entry, fr->pc); |
| 3082 | return 0; | 3075 | return 0; |
| 3083 | } | 3076 | } |
| 3084 | 3077 | ||
| @@ -3088,7 +3081,7 @@ perf_callchain_kernel(struct pt_regs *regs, | |||
| 3088 | { | 3081 | { |
| 3089 | struct stackframe fr; | 3082 | struct stackframe fr; |
| 3090 | 3083 | ||
| 3091 | callchain_store(entry, PERF_CONTEXT_KERNEL); | 3084 | perf_callchain_store(entry, PERF_CONTEXT_KERNEL); |
| 3092 | fr.fp = regs->ARM_fp; | 3085 | fr.fp = regs->ARM_fp; |
| 3093 | fr.sp = regs->ARM_sp; | 3086 | fr.sp = regs->ARM_sp; |
| 3094 | fr.lr = regs->ARM_lr; | 3087 | fr.lr = regs->ARM_lr; |
