target/sparc: Define features via cpu-feature.h.inc

Manage feature bits automatically.

Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
Richard Henderson 2023-10-15 17:02:33 -07:00
parent ec860e5d03
commit bd7ff659a7
2 changed files with 32 additions and 19 deletions

View file

@ -0,0 +1,19 @@
FEATURE(FLOAT)
FEATURE(FLOAT128)
FEATURE(SWAP)
FEATURE(MUL)
FEATURE(DIV)
FEATURE(FLUSH)
FEATURE(FSQRT)
FEATURE(FMUL)
FEATURE(VIS1)
FEATURE(VIS2)
FEATURE(FSMULD)
FEATURE(HYPV)
FEATURE(CMT)
FEATURE(GL)
FEATURE(TA0_SHUTDOWN) /* Shutdown on "ta 0x0" */
FEATURE(ASR17)
FEATURE(CACHE_CTRL)
FEATURE(POWERDOWN)
FEATURE(CASA)

View file

@ -291,25 +291,19 @@ struct sparc_def_t {
uint32_t maxtl; uint32_t maxtl;
}; };
#define CPU_FEATURE_FLOAT (1 << 0) #define FEATURE(X) CPU_FEATURE_BIT_##X,
#define CPU_FEATURE_FLOAT128 (1 << 1) enum {
#define CPU_FEATURE_SWAP (1 << 2) #include "cpu-feature.h.inc"
#define CPU_FEATURE_MUL (1 << 3) };
#define CPU_FEATURE_DIV (1 << 4)
#define CPU_FEATURE_FLUSH (1 << 5) #undef FEATURE
#define CPU_FEATURE_FSQRT (1 << 6) #define FEATURE(X) CPU_FEATURE_##X = 1u << CPU_FEATURE_BIT_##X,
#define CPU_FEATURE_FMUL (1 << 7)
#define CPU_FEATURE_VIS1 (1 << 8) enum {
#define CPU_FEATURE_VIS2 (1 << 9) #include "cpu-feature.h.inc"
#define CPU_FEATURE_FSMULD (1 << 10) };
#define CPU_FEATURE_HYPV (1 << 11)
#define CPU_FEATURE_CMT (1 << 12) #undef FEATURE
#define CPU_FEATURE_GL (1 << 13)
#define CPU_FEATURE_TA0_SHUTDOWN (1 << 14) /* Shutdown on "ta 0x0" */
#define CPU_FEATURE_ASR17 (1 << 15)
#define CPU_FEATURE_CACHE_CTRL (1 << 16)
#define CPU_FEATURE_POWERDOWN (1 << 17)
#define CPU_FEATURE_CASA (1 << 18)
#ifndef TARGET_SPARC64 #ifndef TARGET_SPARC64
#define CPU_DEFAULT_FEATURES (CPU_FEATURE_FLOAT | CPU_FEATURE_SWAP | \ #define CPU_DEFAULT_FEATURES (CPU_FEATURE_FLOAT | CPU_FEATURE_SWAP | \