mirror of https://github.com/xemu-project/xemu.git
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: Aurelien Jarno <aurelien@aurel32.net> Signed-off-by: Richard Henderson <rth@twiddle.net>
This commit is contained in:
parent
3e9bd63acf
commit
78cd7b835e
|
@ -22,6 +22,10 @@
|
||||||
* THE SOFTWARE.
|
* THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#if TCG_TARGET_REG_BITS != 32
|
||||||
|
#error unsupported
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
static const char * const tcg_target_reg_names[TCG_TARGET_NB_REGS] = {
|
static const char * const tcg_target_reg_names[TCG_TARGET_NB_REGS] = {
|
||||||
"%r0", "%r1", "%rp", "%r3", "%r4", "%r5", "%r6", "%r7",
|
"%r0", "%r1", "%rp", "%r3", "%r4", "%r5", "%r6", "%r7",
|
||||||
|
|
|
@ -25,10 +25,6 @@
|
||||||
#ifndef TCG_TARGET_HPPA
|
#ifndef TCG_TARGET_HPPA
|
||||||
#define TCG_TARGET_HPPA 1
|
#define TCG_TARGET_HPPA 1
|
||||||
|
|
||||||
#if TCG_TARGET_REG_BITS != 32
|
|
||||||
#error unsupported
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define TCG_TARGET_WORDS_BIGENDIAN
|
#define TCG_TARGET_WORDS_BIGENDIAN
|
||||||
|
|
||||||
#define TCG_TARGET_NB_REGS 32
|
#define TCG_TARGET_NB_REGS 32
|
||||||
|
|
|
@ -24,12 +24,14 @@
|
||||||
#ifndef TCG_TARGET_I386
|
#ifndef TCG_TARGET_I386
|
||||||
#define TCG_TARGET_I386 1
|
#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_NB_REGS 16
|
# define TCG_TARGET_REG_BITS 64
|
||||||
|
# define TCG_TARGET_NB_REGS 16
|
||||||
#else
|
#else
|
||||||
# define TCG_TARGET_NB_REGS 8
|
# define TCG_TARGET_REG_BITS 32
|
||||||
|
# define TCG_TARGET_NB_REGS 8
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
|
|
@ -24,6 +24,14 @@
|
||||||
#ifndef TCG_TARGET_SPARC
|
#ifndef TCG_TARGET_SPARC
|
||||||
#define TCG_TARGET_SPARC 1
|
#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_WORDS_BIGENDIAN
|
||||||
|
|
||||||
#define TCG_TARGET_NB_REGS 32
|
#define TCG_TARGET_NB_REGS 32
|
||||||
|
|
19
tcg/tcg.h
19
tcg/tcg.h
|
@ -23,13 +23,17 @@
|
||||||
*/
|
*/
|
||||||
#include "qemu-common.h"
|
#include "qemu-common.h"
|
||||||
|
|
||||||
/* Target word size (must be identical to pointer size). */
|
#include "tcg-target.h"
|
||||||
#if UINTPTR_MAX == UINT32_MAX
|
|
||||||
# define TCG_TARGET_REG_BITS 32
|
/* Default target word size to pointer size. */
|
||||||
#elif UINTPTR_MAX == UINT64_MAX
|
#ifndef TCG_TARGET_REG_BITS
|
||||||
# define TCG_TARGET_REG_BITS 64
|
# if UINTPTR_MAX == UINT32_MAX
|
||||||
#else
|
# define TCG_TARGET_REG_BITS 32
|
||||||
# error Unknown pointer size for tcg target
|
# elif UINTPTR_MAX == UINT64_MAX
|
||||||
|
# define TCG_TARGET_REG_BITS 64
|
||||||
|
# else
|
||||||
|
# error Unknown pointer size for tcg target
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if TCG_TARGET_REG_BITS == 32
|
#if TCG_TARGET_REG_BITS == 32
|
||||||
|
@ -46,7 +50,6 @@ typedef uint64_t tcg_target_ulong;
|
||||||
#error unsupported
|
#error unsupported
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "tcg-target.h"
|
|
||||||
#include "tcg-runtime.h"
|
#include "tcg-runtime.h"
|
||||||
|
|
||||||
#if TCG_TARGET_NB_REGS <= 32
|
#if TCG_TARGET_NB_REGS <= 32
|
||||||
|
|
|
@ -44,6 +44,14 @@
|
||||||
|
|
||||||
#define TCG_TARGET_INTERPRETER 1
|
#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
|
#ifdef CONFIG_DEBUG_TCG
|
||||||
/* Enable debug output. */
|
/* Enable debug output. */
|
||||||
#define CONFIG_DEBUG_TCG_INTERPRETER
|
#define CONFIG_DEBUG_TCG_INTERPRETER
|
||||||
|
|
Loading…
Reference in New Issue