[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 09/29] tcg: Allow TCG_TARGET_REG_BITS to be specified
From: |
Richard Henderson |
Subject: |
[Qemu-devel] [PULL 09/29] tcg: Allow TCG_TARGET_REG_BITS to be specified independantly |
Date: |
Mon, 2 Sep 2013 09:28:54 -0700 |
There are several hosts for which it would be useful to use the
available 64-bit registers in a 32-bit pointer environment.
Reviewed-by: Aurelien Jarno <address@hidden>
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 68f77ba..e5aed91 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 be5895f..122edce 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 1f6c7eb..d32d7ef 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 c0d3abc..2edf858 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 2fce485..8a5e55b 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 02e0da1..c2ecfbe 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
--
1.8.1.4
- [Qemu-devel] [PULL 00/29] Three tcg patch sets, Richard Henderson, 2013/09/02
- [Qemu-devel] [PULL 01/29] tcg: Add muluh and mulsh opcodes, Richard Henderson, 2013/09/02
- [Qemu-devel] [PULL 02/29] tcg-mips: Implement mulsh, muluh, Richard Henderson, 2013/09/02
- [Qemu-devel] [PULL 03/29] tcg-ppc64: Implement muluh, mulsh, Richard Henderson, 2013/09/02
- [Qemu-devel] [PULL 04/29] tcg: Constant fold div, rem, Richard Henderson, 2013/09/02
- [Qemu-devel] [PULL 05/29] qtest: Fix FMT_timeval vs time_t, Richard Henderson, 2013/09/02
- [Qemu-devel] [PULL 06/29] tcg: Change flush_icache_range arguments to uintptr_t, Richard Henderson, 2013/09/02
- [Qemu-devel] [PULL 07/29] tcg: Change tcg_qemu_tb_exec return to uintptr_t, Richard Henderson, 2013/09/02
- [Qemu-devel] [PULL 08/29] tcg: Fix next_tb type in cpu_exec, Richard Henderson, 2013/09/02
- [Qemu-devel] [PULL 09/29] tcg: Allow TCG_TARGET_REG_BITS to be specified independantly,
Richard Henderson <=
- [Qemu-devel] [PULL 10/29] tcg: Define TCG_TYPE_PTR properly, Richard Henderson, 2013/09/02
- [Qemu-devel] [PULL 11/29] tcg: Define TCG_ptr properly, Richard Henderson, 2013/09/02
- [Qemu-devel] [PULL 12/29] tcg: Change frame pointer offsets to intptr_t, Richard Henderson, 2013/09/02
- [Qemu-devel] [PULL 13/29] tcg: Change memory offsets to intptr_t, Richard Henderson, 2013/09/02
- [Qemu-devel] [PULL 14/29] tcg: Change relocation offsets to intptr_t, Richard Henderson, 2013/09/02
- [Qemu-devel] [PULL 15/29] tcg: Use uintptr_t in TCGHelperInfo, Richard Henderson, 2013/09/02
- [Qemu-devel] [PULL 16/29] tcg: Change tcg_gen_exit_tb argument to uintptr_t, Richard Henderson, 2013/09/02
- [Qemu-devel] [PULL 17/29] tcg: Change tcg_out_ld/st offset to intptr_t, Richard Henderson, 2013/09/02
- [Qemu-devel] [PULL 18/29] tcg: Use appropriate types in tcg_reg_alloc_call, Richard Henderson, 2013/09/02
- [Qemu-devel] [PULL 19/29] tcg: Fix jit debug for x32, Richard Henderson, 2013/09/02