• Leo Yan's avatar
    perf parse-regs: Introduce functions perf_arch_reg_{ip|sp}() · 34af56af
    Leo Yan authored
    The current code uses macros PERF_REG_IP and PERF_REG_SP for parsing
    registers and we build perf with these macros statically, which means it
    only can correctly analyze CPU registers for the native architecture and
    fails to support cross analysis (e.g. we build perf on x86 and cannot
    analyze Arm64's registers).
    
    We need to generalize util/perf_regs.c for support multi architectures,
    as a first step, this commit introduces new functions perf_arch_reg_ip()
    and perf_arch_reg_sp(), these two functions dynamically return IP and SP
    register index respectively according to the parameter "arch".
    
    Every architecture has its own functions (like __perf_reg_ip_arm64 and
    __perf_reg_sp_arm64), these architecture specific functions are defined
    in each arch source file under folder util/perf-regs-arch; at the end
    all of them are built into the tool for cross analysis.
    
    Committer notes:
    
    Make DWARF_MINIMAL_REGS() an inline function, so that we can use the
    __maybe_unused attribute for the 'arch' parameter, as this will avoid a
    build failure when that variable is unused in the callers. That happens
    when building on unsupported architectures, the ones without
    HAVE_PERF_REGS_SUPPORT defined.
    Signed-off-by: default avatarLeo Yan <leo.yan@linaro.org>
    Acked-by: default avatarIan Rogers <irogers@google.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Albert Ou <aou@eecs.berkeley.edu>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Eric Lin <eric.lin@sifive.com>
    Cc: Fangrui Song <maskray@google.com>
    Cc: Guo Ren <guoren@kernel.org>
    Cc: Huacai Chen <chenhuacai@kernel.org>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Ivan Babrou <ivan@cloudflare.com>
    Cc: James Clark <james.clark@arm.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: John Garry <john.g.garry@oracle.com>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Mike Leach <mike.leach@linaro.org>
    Cc: Ming Wang <wangming01@loongson.cn>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Palmer Dabbelt <palmer@dabbelt.com>
    Cc: Paul Walmsley <paul.walmsley@sifive.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Sandipan Das <sandipan.das@amd.com>
    Cc: Will Deacon <will@kernel.org>
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-csky@vger.kernel.org
    Cc: linux-riscv@lists.infradead.org
    Link: https://lore.kernel.org/r/20230606014559.21783-3-leo.yan@linaro.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    34af56af
perf_regs_riscv.c 1.65 KB