Replace the fixed definition of TYPE_STATE_MAX_REGS with architecture- specific values for better accuracy across multiple CPU architectures including PowerPC, ARM, x86, RISC-V, MIPS, and others. This change ensures the type state registers array size matches the actual register count of the target platform.
Signed-off-by: Suchit Karunakaran <suchitkarunaka...@gmail.com> --- tools/perf/util/annotate-data.h | 45 ++++++++++++++++++++++++++++++--- 1 file changed, 41 insertions(+), 4 deletions(-) diff --git a/tools/perf/util/annotate-data.h b/tools/perf/util/annotate-data.h index 541fee1a5f0a..0dfb12a8f1cc 100644 --- a/tools/perf/util/annotate-data.h +++ b/tools/perf/util/annotate-data.h @@ -189,11 +189,48 @@ struct type_state_stack { u8 kind; }; -/* FIXME: This should be arch-dependent */ -#ifdef __powerpc__ -#define TYPE_STATE_MAX_REGS 32 +#if defined(__powerpc__) || defined(__powerpc64__) +#define TYPE_STATE_MAX_REGS 32 +#elif defined(__aarch64__) +#define TYPE_STATE_MAX_REGS 31 +#elif defined(__arm__) +#define TYPE_STATE_MAX_REGS 16 +#elif defined(__x86_64__) +#define TYPE_STATE_MAX_REGS 16 +#elif defined(__i386__) +#define TYPE_STATE_MAX_REGS 8 +#elif defined(__riscv) +#define TYPE_STATE_MAX_REGS 32 +#elif defined(__mips__) +#define TYPE_STATE_MAX_REGS 32 +#elif defined(__sparc__) || defined(__sparc64__) +#define TYPE_STATE_MAX_REGS 32 +#elif defined(__alpha__) +#define TYPE_STATE_MAX_REGS 32 +#elif defined(__s390__) || defined(__s390x__) +#define TYPE_STATE_MAX_REGS 16 +#elif defined(__sh__) +#define TYPE_STATE_MAX_REGS 16 +#elif defined(__nios2__) +#define TYPE_STATE_MAX_REGS 32 +#elif defined(__hexagon__) +#define TYPE_STATE_MAX_REGS 32 +#elif defined(__openrisc__) +#define TYPE_STATE_MAX_REGS 32 +#elif defined(__csky__) +#define TYPE_STATE_MAX_REGS 32 +#elif defined(__loongarch__) +#define TYPE_STATE_MAX_REGS 32 +#elif defined(__arc__) +#define TYPE_STATE_MAX_REGS 32 +#elif defined(__microblaze__) +#define TYPE_STATE_MAX_REGS 32 +#elif defined(__xtensa__) +#define TYPE_STATE_MAX_REGS 16 +#elif defined(__m68k__) +#define TYPE_STATE_MAX_REGS 16 #else -#define TYPE_STATE_MAX_REGS 16 +#define TYPE_STATE_MAX_REGS 16 #endif /* -- 2.50.1