From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34578) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VWpWo-0000YN-CO for qemu-devel@nongnu.org; Thu, 17 Oct 2013 11:30:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VWpWj-0002Ar-JD for qemu-devel@nongnu.org; Thu, 17 Oct 2013 11:30:22 -0400 Received: from mail-qa0-x231.google.com ([2607:f8b0:400d:c00::231]:38993) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VWpWj-0002AO-Fp for qemu-devel@nongnu.org; Thu, 17 Oct 2013 11:30:17 -0400 Received: by mail-qa0-f49.google.com with SMTP id i13so1756454qae.15 for ; Thu, 17 Oct 2013 08:30:17 -0700 (PDT) Sender: Richard Henderson From: Richard Henderson Date: Thu, 17 Oct 2013 08:29:37 -0700 Message-Id: <1382023781-26323-3-git-send-email-rth@twiddle.net> In-Reply-To: <1382023781-26323-1-git-send-email-rth@twiddle.net> References: <1382023781-26323-1-git-send-email-rth@twiddle.net> Subject: [Qemu-devel] [PATCH v3 2/6] tcg-ppc64: Use qemu_getauxval List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org Allow host detection on linux systems without glibc 2.16 or later. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- include/elf.h | 34 ++++++++++++++++++++++++++++++++++ tcg/ppc64/tcg-target.c | 11 ++--------- 2 files changed, 36 insertions(+), 9 deletions(-) diff --git a/include/elf.h b/include/elf.h index 58bfbf8..7fdd3df 100644 --- a/include/elf.h +++ b/include/elf.h @@ -411,6 +411,40 @@ typedef struct { #define R_SPARC_5 44 #define R_SPARC_6 45 +/* Bits present in AT_HWCAP for PowerPC. */ + +#define PPC_FEATURE_32 0x80000000 +#define PPC_FEATURE_64 0x40000000 +#define PPC_FEATURE_601_INSTR 0x20000000 +#define PPC_FEATURE_HAS_ALTIVEC 0x10000000 +#define PPC_FEATURE_HAS_FPU 0x08000000 +#define PPC_FEATURE_HAS_MMU 0x04000000 +#define PPC_FEATURE_HAS_4xxMAC 0x02000000 +#define PPC_FEATURE_UNIFIED_CACHE 0x01000000 +#define PPC_FEATURE_HAS_SPE 0x00800000 +#define PPC_FEATURE_HAS_EFP_SINGLE 0x00400000 +#define PPC_FEATURE_HAS_EFP_DOUBLE 0x00200000 +#define PPC_FEATURE_NO_TB 0x00100000 +#define PPC_FEATURE_POWER4 0x00080000 +#define PPC_FEATURE_POWER5 0x00040000 +#define PPC_FEATURE_POWER5_PLUS 0x00020000 +#define PPC_FEATURE_CELL 0x00010000 +#define PPC_FEATURE_BOOKE 0x00008000 +#define PPC_FEATURE_SMT 0x00004000 +#define PPC_FEATURE_ICACHE_SNOOP 0x00002000 +#define PPC_FEATURE_ARCH_2_05 0x00001000 +#define PPC_FEATURE_PA6T 0x00000800 +#define PPC_FEATURE_HAS_DFP 0x00000400 +#define PPC_FEATURE_POWER6_EXT 0x00000200 +#define PPC_FEATURE_ARCH_2_06 0x00000100 +#define PPC_FEATURE_HAS_VSX 0x00000080 + +#define PPC_FEATURE_PSERIES_PERFMON_COMPAT \ + 0x00000040 + +#define PPC_FEATURE_TRUE_LE 0x00000002 +#define PPC_FEATURE_PPC_LE 0x00000001 + /* Bits present in AT_HWCAP, primarily for Sparc32. */ #define HWCAP_SPARC_FLUSH 1 /* CPU supports flush instruction. */ diff --git a/tcg/ppc64/tcg-target.c b/tcg/ppc64/tcg-target.c index 6109d86..06e440f 100644 --- a/tcg/ppc64/tcg-target.c +++ b/tcg/ppc64/tcg-target.c @@ -45,15 +45,10 @@ static uint8_t *tb_ret_addr; #define GUEST_BASE 0 #endif -#ifdef CONFIG_GETAUXVAL -#include +#include "elf.h" 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 @@ -2132,12 +2127,10 @@ static const TCGTargetOpDef ppc_op_defs[] = { static void tcg_target_init(TCGContext *s) { -#ifdef CONFIG_GETAUXVAL - unsigned long hwcap = getauxval(AT_HWCAP); + unsigned long hwcap = qemu_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); -- 1.8.3.1