perf parse-regs: Remove PERF_REGS_{MAX|MASK} from common code
authorLeo Yan <leo.yan@linaro.org>
Tue, 6 Jun 2023 01:45:58 +0000 (09:45 +0800)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 16 Aug 2023 11:49:10 +0000 (08:49 -0300)
The macros PERF_REGS_MAX and PERF_REGS_MASK are architecture specific,
let's remove them from the common file util/perf_regs.c.

As a side effect, the weak functions arch__intr_reg_mask() and
arch__user_reg_mask() just return zeros, every arch defines its own
functions in the 'arch' folder for returning right values.

Note, we don't need to return intr/user register masks dynamically, this
is because these two functions are invoked during recording phase but
not decoding phase, they are always invoked on the native environment,
thus we don't need to parse them dynamically.

Signed-off-by: Leo Yan <leo.yan@linaro.org>
Acked-by: Ian 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-6-leo.yan@linaro.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
12 files changed:
tools/perf/arch/arm/util/perf_regs.c
tools/perf/arch/arm64/util/perf_regs.c
tools/perf/arch/csky/util/perf_regs.c
tools/perf/arch/loongarch/util/perf_regs.c
tools/perf/arch/mips/util/perf_regs.c
tools/perf/arch/powerpc/util/perf_regs.c
tools/perf/arch/riscv/util/perf_regs.c
tools/perf/arch/s390/util/perf_regs.c
tools/perf/arch/x86/util/perf_regs.c
tools/perf/util/evsel.c
tools/perf/util/perf_regs.c
tools/perf/util/perf_regs.h

index 2833e101a7c6407263130e9948a06a2caa32bc4b..d9d4777bf7f99eb0f8569cdd5a8dfd70567645f4 100644 (file)
@@ -4,3 +4,13 @@
 const struct sample_reg sample_reg_masks[] = {
        SMPL_REG_END
 };
+
+uint64_t arch__intr_reg_mask(void)
+{
+       return PERF_REGS_MASK;
+}
+
+uint64_t arch__user_reg_mask(void)
+{
+       return PERF_REGS_MASK;
+}
index 006692c9b0408921f6d26f042c53378a8aedd747..76e2e30702cdc6ac6d4b1abcbe1dca86b63876af 100644 (file)
@@ -139,6 +139,11 @@ int arch_sdt_arg_parse_op(char *old_op, char **new_op)
        return SDT_ARG_VALID;
 }
 
+uint64_t arch__intr_reg_mask(void)
+{
+       return PERF_REGS_MASK;
+}
+
 uint64_t arch__user_reg_mask(void)
 {
        struct perf_event_attr attr = {
index 2864e2e3776d5105d39f83f4de94d306df4a07ac..b17fc30abb293882cda6ee2e2ba9b96ce4e116c5 100644 (file)
@@ -4,3 +4,13 @@
 const struct sample_reg sample_reg_masks[] = {
        SMPL_REG_END
 };
+
+uint64_t arch__intr_reg_mask(void)
+{
+       return PERF_REGS_MASK;
+}
+
+uint64_t arch__user_reg_mask(void)
+{
+       return PERF_REGS_MASK;
+}
index 2833e101a7c6407263130e9948a06a2caa32bc4b..d9d4777bf7f99eb0f8569cdd5a8dfd70567645f4 100644 (file)
@@ -4,3 +4,13 @@
 const struct sample_reg sample_reg_masks[] = {
        SMPL_REG_END
 };
+
+uint64_t arch__intr_reg_mask(void)
+{
+       return PERF_REGS_MASK;
+}
+
+uint64_t arch__user_reg_mask(void)
+{
+       return PERF_REGS_MASK;
+}
index 2864e2e3776d5105d39f83f4de94d306df4a07ac..b17fc30abb293882cda6ee2e2ba9b96ce4e116c5 100644 (file)
@@ -4,3 +4,13 @@
 const struct sample_reg sample_reg_masks[] = {
        SMPL_REG_END
 };
+
+uint64_t arch__intr_reg_mask(void)
+{
+       return PERF_REGS_MASK;
+}
+
+uint64_t arch__user_reg_mask(void)
+{
+       return PERF_REGS_MASK;
+}
index 8d07a78e742ab911d709a95c46ea8f74d2ee07f8..1d264bf55955f026200e79bf51ecccf131cb6f3b 100644 (file)
@@ -226,3 +226,8 @@ uint64_t arch__intr_reg_mask(void)
        }
        return mask;
 }
+
+uint64_t arch__user_reg_mask(void)
+{
+       return PERF_REGS_MASK;
+}
index 2864e2e3776d5105d39f83f4de94d306df4a07ac..b17fc30abb293882cda6ee2e2ba9b96ce4e116c5 100644 (file)
@@ -4,3 +4,13 @@
 const struct sample_reg sample_reg_masks[] = {
        SMPL_REG_END
 };
+
+uint64_t arch__intr_reg_mask(void)
+{
+       return PERF_REGS_MASK;
+}
+
+uint64_t arch__user_reg_mask(void)
+{
+       return PERF_REGS_MASK;
+}
index 2864e2e3776d5105d39f83f4de94d306df4a07ac..b17fc30abb293882cda6ee2e2ba9b96ce4e116c5 100644 (file)
@@ -4,3 +4,13 @@
 const struct sample_reg sample_reg_masks[] = {
        SMPL_REG_END
 };
+
+uint64_t arch__intr_reg_mask(void)
+{
+       return PERF_REGS_MASK;
+}
+
+uint64_t arch__user_reg_mask(void)
+{
+       return PERF_REGS_MASK;
+}
index 8ad4112ad10c15ee2f292c0f83383c5a27fc2e0c..218747a8b039f82a26d1b0f933f136941c1c4a4f 100644 (file)
@@ -317,3 +317,8 @@ uint64_t arch__intr_reg_mask(void)
 
        return PERF_REGS_MASK;
 }
+
+uint64_t arch__user_reg_mask(void)
+{
+       return PERF_REGS_MASK;
+}
index e3be12596cc3f6e3772602a4e5fbc097e1f836a8..a8a5ff87cc1f712f54916cb222e183bf05650a36 100644 (file)
@@ -879,7 +879,7 @@ static void __evsel__config_callchain(struct evsel *evsel, struct record_opts *o
                        evsel__set_sample_bit(evsel, REGS_USER);
                        evsel__set_sample_bit(evsel, STACK_USER);
                        if (opts->sample_user_regs &&
-                           DWARF_MINIMAL_REGS(arch) != PERF_REGS_MASK) {
+                           DWARF_MINIMAL_REGS(arch) != arch__user_reg_mask()) {
                                attr->sample_regs_user |= DWARF_MINIMAL_REGS(arch);
                                pr_warning("WARNING: The use of --call-graph=dwarf may require all the user registers, "
                                           "specifying a subset with --user-regs may render DWARF unwinding unreliable, "
index 23584efd4886eb6f4b1ef8aad463c3d173eef33f..e2275856b5704e46e57327dcd6d161c9a8d6c373 100644 (file)
@@ -13,12 +13,12 @@ int __weak arch_sdt_arg_parse_op(char *old_op __maybe_unused,
 
 uint64_t __weak arch__intr_reg_mask(void)
 {
-       return PERF_REGS_MASK;
+       return 0;
 }
 
 uint64_t __weak arch__user_reg_mask(void)
 {
-       return PERF_REGS_MASK;
+       return 0;
 }
 
 #ifdef HAVE_PERF_REGS_SUPPORT
index de1673057e502de9438c7cf69259c53291c2649c..cd9fb673c4078b360e366cb7fc95f50218d42687 100644 (file)
@@ -70,12 +70,10 @@ static inline uint64_t DWARF_MINIMAL_REGS(const char *arch)
 }
 
 #else
-#define PERF_REGS_MASK 0
-#define PERF_REGS_MAX  0
 
 static inline uint64_t DWARF_MINIMAL_REGS(const char *arch __maybe_unused)
 {
-       return PERF_REGS_MASK;
+       return 0;
 }
 
 static inline const char *perf_reg_name(int id __maybe_unused, const char *arch __maybe_unused)