perf unwind: Change macro names of perf register
Use macro name prefixed with "LIBUNWIND_ARCH" for better understanding that the regs used by callbacks of libunwind are arch specific. The real regs used should be defined in the wrapper file of "unwind-libunwind-local.c" for each supported arch. Signed-off-by: He Kuang <hekuang@huawei.com> Acked-by: Jiri Olsa <jolsa@kernel.org> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Andi Kleen <ak@linux.intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Ekaterina Tumanova <tumanova@linux.vnet.ibm.com> Cc: Josh Poimboeuf <jpoimboe@redhat.com> Cc: Kan Liang <kan.liang@intel.com> Cc: Masami Hiramatsu <mhiramat@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Pekka Enberg <penberg@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Stephane Eranian <eranian@google.com> Cc: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com> Cc: Wang Nan <wangnan0@huawei.com> Link: http://lkml.kernel.org/r/1466578626-92406-2-git-send-email-hekuang@huawei.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
76c588f1f6
commit
78ff1d6d8b
|
@ -462,7 +462,8 @@ static int access_mem(unw_addr_space_t __maybe_unused as,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = perf_reg_value(&start, &ui->sample->user_regs, PERF_REG_SP);
|
ret = perf_reg_value(&start, &ui->sample->user_regs,
|
||||||
|
LIBUNWIND__ARCH_REG_SP);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
@ -621,7 +622,8 @@ static int get_entries(struct unwind_info *ui, unwind_entry_cb_t cb,
|
||||||
unw_cursor_t c;
|
unw_cursor_t c;
|
||||||
int ret, i = 0;
|
int ret, i = 0;
|
||||||
|
|
||||||
ret = perf_reg_value(&val, &ui->sample->user_regs, PERF_REG_IP);
|
ret = perf_reg_value(&val, &ui->sample->user_regs,
|
||||||
|
LIBUNWIND__ARCH_REG_IP);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
|
|
@ -32,6 +32,15 @@ int unwind__get_entries(unwind_entry_cb_t cb, void *arg,
|
||||||
#ifndef LIBUNWIND__ARCH_REG_ID
|
#ifndef LIBUNWIND__ARCH_REG_ID
|
||||||
#define LIBUNWIND__ARCH_REG_ID(regnum) libunwind__arch_reg_id(regnum)
|
#define LIBUNWIND__ARCH_REG_ID(regnum) libunwind__arch_reg_id(regnum)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef LIBUNWIND__ARCH_REG_SP
|
||||||
|
#define LIBUNWIND__ARCH_REG_SP PERF_REG_SP
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef LIBUNWIND__ARCH_REG_IP
|
||||||
|
#define LIBUNWIND__ARCH_REG_IP PERF_REG_IP
|
||||||
|
#endif
|
||||||
|
|
||||||
int LIBUNWIND__ARCH_REG_ID(int regnum);
|
int LIBUNWIND__ARCH_REG_ID(int regnum);
|
||||||
int unwind__prepare_access(struct thread *thread, struct map *map);
|
int unwind__prepare_access(struct thread *thread, struct map *map);
|
||||||
void unwind__flush_access(struct thread *thread);
|
void unwind__flush_access(struct thread *thread);
|
||||||
|
|
Loading…
Reference in a new issue