Commit 78cd7b83 authored by Richard Henderson's avatar Richard Henderson
Browse files

tcg: Allow TCG_TARGET_REG_BITS to be specified independantly



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: default avatarAurelien Jarno <aurelien@aurel32.net>
Signed-off-by: default avatarRichard Henderson <rth@twiddle.net>
parent 3e9bd63a
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -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",
+0 −4
Original line number Diff line number Diff line
@@ -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
+6 −4
Original line number Diff line number Diff line
@@ -24,11 +24,13 @@
#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
#ifdef __x86_64__
# define TCG_TARGET_REG_BITS  64
# define TCG_TARGET_NB_REGS   16
#else
# define TCG_TARGET_REG_BITS  32
# define TCG_TARGET_NB_REGS    8
#endif

+8 −0
Original line number Diff line number Diff line
@@ -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
+11 −8
Original line number Diff line number Diff line
@@ -23,7 +23,10 @@
 */
#include "qemu-common.h"

/* Target word size (must be identical to pointer size). */
#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
@@ -31,6 +34,7 @@
# else
#  error Unknown pointer size for tcg target
# endif
#endif

#if TCG_TARGET_REG_BITS == 32
typedef int32_t tcg_target_long;
@@ -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
Loading