[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 15/18] tcg: Allow TCG_TARGET_REG_BITS to be spec
From: |
Aurelien Jarno |
Subject: |
Re: [Qemu-devel] [PATCH 15/18] tcg: Allow TCG_TARGET_REG_BITS to be specified independantly |
Date: |
Thu, 29 Aug 2013 18:45:00 +0200 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On Thu, Aug 22, 2013 at 09:58:46AM -0700, Richard Henderson wrote:
> There are several hosts for which it would be useful to use the
> available 64-bit registers in a 32-bit pointer environment.
>
> Signed-off-by: Richard Henderson <address@hidden>
> ---
> tcg/hppa/tcg-target.c | 4 ++++
> tcg/hppa/tcg-target.h | 4 ----
> tcg/i386/tcg-target.h | 10 ++++++----
> tcg/sparc/tcg-target.h | 8 ++++++++
> tcg/tcg.h | 19 +++++++++++--------
> tcg/tci/tcg-target.h | 8 ++++++++
> 6 files changed, 37 insertions(+), 16 deletions(-)
>
> diff --git a/tcg/hppa/tcg-target.c b/tcg/hppa/tcg-target.c
> index f464aff..0150e62 100644
> --- a/tcg/hppa/tcg-target.c
> +++ b/tcg/hppa/tcg-target.c
> @@ -22,6 +22,10 @@
> * THE SOFTWARE.
> */
>
> +#if TCG_TARGET_REG_BITS != 32
> +#error unsupported
> +#endif
> +
> #ifndef NDEBUG
> static const char * const tcg_target_reg_names[TCG_TARGET_NB_REGS] = {
> "%r0", "%r1", "%rp", "%r3", "%r4", "%r5", "%r6", "%r7",
> diff --git a/tcg/hppa/tcg-target.h b/tcg/hppa/tcg-target.h
> index a9257a5..302cf4e 100644
> --- a/tcg/hppa/tcg-target.h
> +++ b/tcg/hppa/tcg-target.h
> @@ -25,10 +25,6 @@
> #ifndef TCG_TARGET_HPPA
> #define TCG_TARGET_HPPA 1
>
> -#if TCG_TARGET_REG_BITS != 32
> -#error unsupported
> -#endif
> -
> #define TCG_TARGET_WORDS_BIGENDIAN
>
> #define TCG_TARGET_NB_REGS 32
> diff --git a/tcg/i386/tcg-target.h b/tcg/i386/tcg-target.h
> index 963e839..53914f1 100644
> --- a/tcg/i386/tcg-target.h
> +++ b/tcg/i386/tcg-target.h
> @@ -24,12 +24,14 @@
> #ifndef TCG_TARGET_I386
> #define TCG_TARGET_I386 1
>
> -//#define TCG_TARGET_WORDS_BIGENDIAN
> +#undef TCG_TARGET_WORDS_BIGENDIAN
>
> -#if TCG_TARGET_REG_BITS == 64
> -# define TCG_TARGET_NB_REGS 16
> +#ifdef __x86_64__
> +# define TCG_TARGET_REG_BITS 64
> +# define TCG_TARGET_NB_REGS 16
> #else
> -# define TCG_TARGET_NB_REGS 8
> +# define TCG_TARGET_REG_BITS 32
> +# define TCG_TARGET_NB_REGS 8
> #endif
>
> typedef enum {
> diff --git a/tcg/sparc/tcg-target.h b/tcg/sparc/tcg-target.h
> index d1ca2d6..d356c1b 100644
> --- a/tcg/sparc/tcg-target.h
> +++ b/tcg/sparc/tcg-target.h
> @@ -24,6 +24,14 @@
> #ifndef TCG_TARGET_SPARC
> #define TCG_TARGET_SPARC 1
>
> +#if UINTPTR_MAX == UINT32_MAX
> +# define TCG_TARGET_REG_BITS 32
> +#elif UINTPTR_MAX == UINT64_MAX
> +# define TCG_TARGET_REG_BITS 64
> +#else
> +# error Unknown pointer size for tcg target
> +#endif
> +
> #define TCG_TARGET_WORDS_BIGENDIAN
>
> #define TCG_TARGET_NB_REGS 32
> diff --git a/tcg/tcg.h b/tcg/tcg.h
> index 6e2d619..9755189 100644
> --- a/tcg/tcg.h
> +++ b/tcg/tcg.h
> @@ -23,13 +23,17 @@
> */
> #include "qemu-common.h"
>
> -/* Target word size (must be identical to pointer size). */
> -#if UINTPTR_MAX == UINT32_MAX
> -# define TCG_TARGET_REG_BITS 32
> -#elif UINTPTR_MAX == UINT64_MAX
> -# define TCG_TARGET_REG_BITS 64
> -#else
> -# error Unknown pointer size for tcg target
> +#include "tcg-target.h"
> +
> +/* Default target word size to pointer size. */
> +#ifndef TCG_TARGET_REG_BITS
> +# if UINTPTR_MAX == UINT32_MAX
> +# define TCG_TARGET_REG_BITS 32
> +# elif UINTPTR_MAX == UINT64_MAX
> +# define TCG_TARGET_REG_BITS 64
> +# else
> +# error Unknown pointer size for tcg target
> +# endif
> #endif
>
> #if TCG_TARGET_REG_BITS == 32
> @@ -46,7 +50,6 @@ typedef uint64_t tcg_target_ulong;
> #error unsupported
> #endif
>
> -#include "tcg-target.h"
> #include "tcg-runtime.h"
>
> #if TCG_TARGET_NB_REGS <= 32
> diff --git a/tcg/tci/tcg-target.h b/tcg/tci/tcg-target.h
> index 18f57a2..4811e99 100644
> --- a/tcg/tci/tcg-target.h
> +++ b/tcg/tci/tcg-target.h
> @@ -44,6 +44,14 @@
>
> #define TCG_TARGET_INTERPRETER 1
>
> +#if UINTPTR_MAX == UINT32_MAX
> +# define TCG_TARGET_REG_BITS 32
> +#elif UINTPTR_MAX == UINT64_MAX
> +# define TCG_TARGET_REG_BITS 64
> +#else
> +# error Unknown pointer size for tci target
> +#endif
> +
> #ifdef CONFIG_DEBUG_TCG
> /* Enable debug output. */
> #define CONFIG_DEBUG_TCG_INTERPRETER
Reviewed-by: Aurelien Jarno <address@hidden>
--
Aurelien Jarno GPG: 1024D/F1BCDB73
address@hidden http://www.aurel32.net
- Re: [Qemu-devel] [PATCH 10/18] tcg: Use uintptr_t in TCGHelperInfo, (continued)
- [Qemu-devel] [PATCH 11/18] tcg: Change tcg_gen_exit_tb argument to uintptr_t, Richard Henderson, 2013/08/22
- [Qemu-devel] [PATCH 12/18] tcg: Change tcg_out_ld/st offset to intptr_t, Richard Henderson, 2013/08/22
- [Qemu-devel] [PATCH 13/18] tcg: Use appropriate types in tcg_reg_alloc_call, Richard Henderson, 2013/08/22
- [Qemu-devel] [PATCH 14/18] tcg: Fix jit debug for pointer size != register size, Richard Henderson, 2013/08/22
- [Qemu-devel] [PATCH 15/18] tcg: Allow TCG_TARGET_REG_BITS to be specified independantly, Richard Henderson, 2013/08/22
- Re: [Qemu-devel] [PATCH 15/18] tcg: Allow TCG_TARGET_REG_BITS to be specified independantly,
Aurelien Jarno <=
- [Qemu-devel] [PATCH 16/18] tcg-i386: Use intptr_t appropriately, Richard Henderson, 2013/08/22
- [Qemu-devel] [PATCH 17/18] tcg-i386: Adjust tcg_out_tlb_load for x32, Richard Henderson, 2013/08/22
- [Qemu-devel] [PATCH 18/18] configure: Allow x32 as a host, Richard Henderson, 2013/08/22