From: Aurelien Jarno <aurelien@aurel32.net>
To: Richard Henderson <rth@twiddle.net>
Cc: qemu-devel@nongnu.org
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 [thread overview]
Message-ID: <20130829164500.GD2287@ohm.aurel32.net> (raw)
In-Reply-To: <1377190729-14008-16-git-send-email-rth@twiddle.net>
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 <rth@twiddle.net>
> ---
> 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 <aurelien@aurel32.net>
--
Aurelien Jarno GPG: 1024D/F1BCDB73
aurelien@aurel32.net http://www.aurel32.net
next prev parent reply other threads:[~2013-08-29 16:53 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-22 16:58 [Qemu-devel] [PATCH 00/18] tcg: decouple tcg_target_long from pointer size Richard Henderson
2013-08-22 16:58 ` [Qemu-devel] [PATCH 01/18] qtest: Fix FMT_timeval vs time_t Richard Henderson
2013-08-22 17:09 ` Andreas Färber
2013-08-22 17:53 ` Richard Henderson
2013-08-22 18:01 ` Andreas Färber
2013-08-22 18:05 ` Richard Henderson
2013-08-22 16:58 ` [Qemu-devel] [PATCH 02/18] tcg: Change flush_icache_range arguments to uintptr_t Richard Henderson
2013-08-28 21:06 ` Aurelien Jarno
2013-08-22 16:58 ` [Qemu-devel] [PATCH 03/18] tcg: Change tcg_qemu_tb_exec return " Richard Henderson
2013-08-28 21:06 ` Aurelien Jarno
2013-08-22 16:58 ` [Qemu-devel] [PATCH 04/18] tcg: Fix next_tb type in cpu_exec Richard Henderson
2013-08-28 21:07 ` Aurelien Jarno
2013-08-22 16:58 ` [Qemu-devel] [PATCH 05/18] tcg: Define TCG_TYPE_PTR properly Richard Henderson
2013-08-29 10:53 ` Aurelien Jarno
2013-08-22 16:58 ` [Qemu-devel] [PATCH 06/18] tcg: Define TCG_ptr properly Richard Henderson
2013-08-29 10:53 ` Aurelien Jarno
2013-08-22 16:58 ` [Qemu-devel] [PATCH 07/18] tcg: Change frame pointer offsets to intptr_t Richard Henderson
2013-08-29 10:53 ` Aurelien Jarno
2013-08-22 16:58 ` [Qemu-devel] [PATCH 08/18] tcg: Change memory " Richard Henderson
2013-08-29 10:53 ` Aurelien Jarno
2013-08-22 16:58 ` [Qemu-devel] [PATCH 09/18] tcg: Change relocation " Richard Henderson
2013-08-29 10:53 ` Aurelien Jarno
2013-08-22 16:58 ` [Qemu-devel] [PATCH 10/18] tcg: Use uintptr_t in TCGHelperInfo Richard Henderson
2013-08-29 10:53 ` Aurelien Jarno
2013-08-22 16:58 ` [Qemu-devel] [PATCH 11/18] tcg: Change tcg_gen_exit_tb argument to uintptr_t Richard Henderson
2013-08-29 10:54 ` Aurelien Jarno
2013-08-22 16:58 ` [Qemu-devel] [PATCH 12/18] tcg: Change tcg_out_ld/st offset to intptr_t Richard Henderson
2013-08-29 16:44 ` Aurelien Jarno
2013-08-22 16:58 ` [Qemu-devel] [PATCH 13/18] tcg: Use appropriate types in tcg_reg_alloc_call Richard Henderson
2013-08-29 16:44 ` Aurelien Jarno
2013-08-22 16:58 ` [Qemu-devel] [PATCH 14/18] tcg: Fix jit debug for pointer size != register size Richard Henderson
2013-08-29 16:44 ` Aurelien Jarno
2013-08-22 16:58 ` [Qemu-devel] [PATCH 15/18] tcg: Allow TCG_TARGET_REG_BITS to be specified independantly Richard Henderson
2013-08-29 16:45 ` Aurelien Jarno [this message]
2013-08-22 16:58 ` [Qemu-devel] [PATCH 16/18] tcg-i386: Use intptr_t appropriately Richard Henderson
2013-08-29 16:45 ` Aurelien Jarno
2013-08-22 16:58 ` [Qemu-devel] [PATCH 17/18] tcg-i386: Adjust tcg_out_tlb_load for x32 Richard Henderson
2013-08-29 16:45 ` Aurelien Jarno
2013-08-29 17:53 ` Richard Henderson
2013-08-29 20:52 ` Richard Henderson
2013-08-22 16:58 ` [Qemu-devel] [PATCH 18/18] configure: Allow x32 as a host Richard Henderson
2013-08-29 16:45 ` Aurelien Jarno
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130829164500.GD2287@ohm.aurel32.net \
--to=aurelien@aurel32.net \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.