Commit 7d9dae0a authored by Richard Henderson's avatar Richard Henderson
Browse files

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: default avatarMark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Reviewed-by: default avatarAleksandar Markovic <amarkovic@wavecomp.com>
Signed-off-by: default avatarRichard Henderson <richard.henderson@linaro.org>
parent b82f769c
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -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 */
+4 −4
Original line number Diff line number Diff line
@@ -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