tcg/ppc: Create TCGPowerISA and have_isa
Introduce an enum to hold base < 2.06 < 3.00. Use macros to preserve the existing have_isa_2_06 and have_isa_3_00 predicates. Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Reviewed-by: Aleksandar Markovic <amarkovic@wavecomp.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
b82f769cc1
commit
7d9dae0a10
|
@ -58,8 +58,16 @@ typedef enum {
|
|||
TCG_AREG0 = TCG_REG_R27
|
||||
} TCGReg;
|
||||
|
||||
extern bool have_isa_2_06;
|
||||
extern bool have_isa_3_00;
|
||||
typedef enum {
|
||||
tcg_isa_base,
|
||||
tcg_isa_2_06,
|
||||
tcg_isa_3_00,
|
||||
} TCGPowerISA;
|
||||
|
||||
extern TCGPowerISA have_isa;
|
||||
|
||||
#define have_isa_2_06 (have_isa >= tcg_isa_2_06)
|
||||
#define have_isa_3_00 (have_isa >= tcg_isa_3_00)
|
||||
|
||||
/* optional instructions automatically implemented */
|
||||
#define TCG_TARGET_HAS_ext8u_i32 0 /* andi */
|
||||
|
|
|
@ -64,8 +64,7 @@
|
|||
|
||||
static tcg_insn_unit *tb_ret_addr;
|
||||
|
||||
bool have_isa_2_06;
|
||||
bool have_isa_3_00;
|
||||
TCGPowerISA have_isa;
|
||||
|
||||
#define HAVE_ISA_2_06 have_isa_2_06
|
||||
#define HAVE_ISEL have_isa_2_06
|
||||
|
@ -2787,12 +2786,13 @@ static void tcg_target_init(TCGContext *s)
|
|||
unsigned long hwcap = qemu_getauxval(AT_HWCAP);
|
||||
unsigned long hwcap2 = qemu_getauxval(AT_HWCAP2);
|
||||
|
||||
have_isa = tcg_isa_base;
|
||||
if (hwcap & PPC_FEATURE_ARCH_2_06) {
|
||||
have_isa_2_06 = true;
|
||||
have_isa = tcg_isa_2_06;
|
||||
}
|
||||
#ifdef PPC_FEATURE2_ARCH_3_00
|
||||
if (hwcap2 & PPC_FEATURE2_ARCH_3_00) {
|
||||
have_isa_3_00 = true;
|
||||
have_isa = tcg_isa_3_00;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Reference in a new issue