From 1e6e9aca157bb8bc4bef60374e1f584d742e7fb2 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Mon, 18 Feb 2013 09:11:15 -0800 Subject: tcg-ppc64: Use getauxval for ISA detection Glibc 2.16 includes an easy way to get feature bits previously buried in /proc or the program startup auxiliary vector. Use it. Reviewed-by: Aurelien Jarno Signed-off-by: Richard Henderson --- tcg/ppc64/tcg-target.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'tcg/ppc64') diff --git a/tcg/ppc64/tcg-target.c b/tcg/ppc64/tcg-target.c index b3b38baf1f..643edf9057 100644 --- a/tcg/ppc64/tcg-target.c +++ b/tcg/ppc64/tcg-target.c @@ -44,8 +44,15 @@ static uint8_t *tb_ret_addr; #define GUEST_BASE 0 #endif +#ifdef CONFIG_GETAUXVAL +#include +static bool have_isa_2_06; +#define HAVE_ISA_2_06 have_isa_2_06 +#define HAVE_ISEL have_isa_2_06 +#else #define HAVE_ISA_2_06 0 #define HAVE_ISEL 0 +#endif #ifdef CONFIG_USE_GUEST_BASE #define TCG_GUEST_BASE_REG 30 @@ -2059,6 +2066,13 @@ static const TCGTargetOpDef ppc_op_defs[] = { static void tcg_target_init (TCGContext *s) { +#ifdef CONFIG_GETAUXVAL + unsigned long hwcap = getauxval(AT_HWCAP); + if (hwcap & PPC_FEATURE_ARCH_2_06) { + have_isa_2_06 = true; + } +#endif + tcg_regset_set32 (tcg_target_available_regs[TCG_TYPE_I32], 0, 0xffffffff); tcg_regset_set32 (tcg_target_available_regs[TCG_TYPE_I64], 0, 0xffffffff); tcg_regset_set32 (tcg_target_call_clobber_regs, 0, -- cgit v1.2.3