[PATCH v2 3/3] perf tools: Support register names from all archs
German Gomez
german.gomez at arm.com
Fri Dec 10 07:21:09 PST 2021
On 08/12/2021 13:55, German Gomez wrote:
> Hi John,
>
> On 08/12/2021 11:51, John Garry wrote:
>> On 07/12/2021 18:06, German Gomez wrote:
>>> tools/perf/arch/arm/include/perf_regs.h | 42 --
>>> tools/perf/arch/arm64/include/perf_regs.h | 76 --
>>> tools/perf/arch/csky/include/perf_regs.h | 82 ---
>>> tools/perf/arch/mips/include/perf_regs.h | 69 --
>>> tools/perf/arch/powerpc/include/perf_regs.h | 66 --
>>> tools/perf/arch/riscv/include/perf_regs.h | 74 --
>>> tools/perf/arch/s390/include/perf_regs.h | 78 --
>>> tools/perf/arch/x86/include/perf_regs.h | 82 ---
>>> tools/perf/builtin-script.c | 18 +-
>>> tools/perf/util/perf_regs.c | 666 ++++++++++++++++++
>>> tools/perf/util/perf_regs.h | 10 +-
>>> .../scripting-engines/trace-event-python.c | 10 +-
>>> tools/perf/util/session.c | 25 +-
>>> 13 files changed, 697 insertions(+), 601 deletions(-)
>> Did you consider leaving the register structures where they are while
>> renaming to include the arch name and then having as externs or similar? I see an example of that idea for arm64_unwind_libunwind_ops.
>>
> If by register structures you are referring to "__perf_reg_name(int)", I
> can't leave them where they are. Only one of them would be included in
> the build.
I think I need to elaborate a bit more on this since some of the files
involved share the same name but are serving different purposes and it
could lead to confusion.
The linux repo has "perf_regs.h" for each architecture enumerating the
registers from each architecture. These are the files I #include'd in
"/tools/perf/util/perf_regs.c".
The other "perf_regs.h" affected by this patch are local only to perf.
Likewise there is one file for each architecture, but contrary to the
linux ones, they are mutually exclusive, so I can't #include them all:
#ifndef ARCH_PERF_REGS_H
#define ARCH_PERF_REGS_H
//...
#undef ARCH_PERF_REGS_H
Before the patch, the functions "__perf_reg_name" were declared &
implemented in these headers, so I had to take them out.
Thanks,
German
More information about the linux-riscv
mailing list