qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2 3/6] tcg-arm: Use qemu_getauxval


From: Peter Maydell
Subject: Re: [Qemu-devel] [PATCH v2 3/6] tcg-arm: Use qemu_getauxval
Date: Thu, 17 Oct 2013 12:59:19 +0100

On 10 September 2013 23:07, Richard Henderson <address@hidden> wrote:
> Allow host detection on linux systems without glibc 2.16 or later.
>
> Signed-off-by: Richard Henderson <address@hidden>
> ---
>  include/elf.h        | 22 ++++++++++++++++++++++
>  tcg/arm/tcg-target.c | 15 ++++++---------
>  2 files changed, 28 insertions(+), 9 deletions(-)
>
> diff --git a/include/elf.h b/include/elf.h
> index 7fdd3df..e95fa95 100644
> --- a/include/elf.h
> +++ b/include/elf.h
> @@ -411,6 +411,28 @@ typedef struct {
>  #define R_SPARC_5              44
>  #define R_SPARC_6              45
>
> +/* Bits present in AT_HWCAP for ARM.  */
> +
> +#define HWCAP_ARM_SWP          1
> +#define HWCAP_ARM_HALF         2

Don't use hardcoded tabs, please.

> +#define HWCAP_ARM_THUMB                4
> +#define HWCAP_ARM_26BIT                8
> +#define HWCAP_ARM_FAST_MULT    16
> +#define HWCAP_ARM_FPA          32
> +#define HWCAP_ARM_VFP          64
> +#define HWCAP_ARM_EDSP         128
> +#define HWCAP_ARM_JAVA         256
> +#define HWCAP_ARM_IWMMXT       512
> +#define HWCAP_ARM_CRUNCH       1024
> +#define HWCAP_ARM_THUMBEE      2048
> +#define HWCAP_ARM_NEON         4096
> +#define HWCAP_ARM_VFPv3                8192
> +#define HWCAP_ARM_VFPv3D16     16384
> +#define HWCAP_ARM_TLS          32768
> +#define HWCAP_ARM_VFPv4                65536
> +#define HWCAP_ARM_IDIVA                131072
> +#define HWCAP_ARM_IDIVT                262144
> +
>  /* Bits present in AT_HWCAP for PowerPC.  */
>
>  #define PPC_FEATURE_32                  0x80000000
> diff --git a/tcg/arm/tcg-target.c b/tcg/arm/tcg-target.c
> index eb0e84c..77af1f2 100644
> --- a/tcg/arm/tcg-target.c
> +++ b/tcg/arm/tcg-target.c
> @@ -22,6 +22,8 @@
>   * THE SOFTWARE.
>   */
>
> +#include "elf.h"
> +
>  /* The __ARM_ARCH define is provided by gcc 4.8.  Construct it otherwise.  */
>  #ifndef __ARM_ARCH
>  # if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) \
> @@ -56,9 +58,6 @@ static int arm_arch = __ARM_ARCH;
>  #ifndef use_idiv_instructions
>  bool use_idiv_instructions;
>  #endif
> -#ifdef CONFIG_GETAUXVAL
> -# include <sys/auxv.h>
> -#endif
>
>  #ifndef NDEBUG
>  static const char * const tcg_target_reg_names[TCG_TARGET_NB_REGS] = {
> @@ -2028,22 +2027,20 @@ static const TCGTargetOpDef arm_op_defs[] = {
>
>  static void tcg_target_init(TCGContext *s)
>  {
> -#if defined(CONFIG_GETAUXVAL)
>      /* Only probe for the platform and capabilities if we havn't already
>         determined maximum values at compile time.  */
> -# if !defined(use_idiv_instructions)
> +#ifndef use_idiv_instructions
>      {
> -        unsigned long hwcap = getauxval(AT_HWCAP);
> +        unsigned long hwcap = qemu_getauxval(AT_HWCAP);
>          use_idiv_instructions = (hwcap & HWCAP_ARM_IDIVA) != 0;
>      }
> -# endif
> +#endif
>      if (__ARM_ARCH < 7) {
> -        const char *pl = (const char *)getauxval(AT_PLATFORM);
> +        const char *pl = (const char *)qemu_getauxval(AT_PLATFORM);
>          if (pl != NULL && pl[0] == 'v' && pl[1] >= '4' && pl[1] <= '9') {
>              arm_arch = pl[1] - '0';
>          }
>      }
> -#endif /* GETAUXVAL */
>
>      tcg_regset_set32(tcg_target_available_regs[TCG_TYPE_I32], 0, 0xffff);
>      tcg_regset_set32(tcg_target_call_clobber_regs, 0,
> --
> 1.8.1.4

Otherwise
Reviewed-by: Peter Maydell <address@hidden>

-- PMM



reply via email to

[Prev in Thread] Current Thread [Next in Thread]