ARM: Add ARM target architecture selection (disabled).

This commit is contained in:
Mike Pall
2011-01-25 18:50:24 +01:00
parent 705f593ffc
commit ed6c895ae5
7 changed files with 70 additions and 10 deletions

View File

@@ -17,10 +17,12 @@
#define LUAJIT_ARCH_x86 1
#define LUAJIT_ARCH_X64 2
#define LUAJIT_ARCH_x64 2
#define LUAJIT_ARCH_PPC 3
#define LUAJIT_ARCH_ppc 3
#define LUAJIT_ARCH_PPCSPE 4
#define LUAJIT_ARCH_ppcspe 4
#define LUAJIT_ARCH_ARM 3
#define LUAJIT_ARCH_arm 3
#define LUAJIT_ARCH_PPC 4
#define LUAJIT_ARCH_ppc 4
#define LUAJIT_ARCH_PPCSPE 5
#define LUAJIT_ARCH_ppcspe 5
/* Target OS. */
#define LUAJIT_OS_OTHER 0
@@ -37,6 +39,8 @@
#define LUAJIT_TARGET LUAJIT_ARCH_X86
#elif defined(__x86_64__) || defined(__x86_64) || defined(_M_X64) || defined(_M_AMD64)
#define LUAJIT_TARGET LUAJIT_ARCH_X64
#elif defined(__arm__) || defined(__arm) || defined(__ARM__) || defined(__ARM)
#define LUAJIT_TARGET LUAJIT_ARCH_ARM
#elif defined(__ppc__) || defined(__ppc) || defined(__PPC__) || defined(__PPC) || defined(__powerpc__) || defined(__powerpc) || defined(__POWERPC__) || defined(__POWERPC) || defined(_M_PPC)
#ifdef __NO_FPRS__
#define LUAJIT_TARGET LUAJIT_ARCH_PPCSPE
@@ -117,6 +121,22 @@
#define LJ_TARGET_MASKSHIFT 1
#define LJ_TARGET_MASKROT 1
#elif LUAJIT_TARGET == LUAJIT_ARCH_ARM
#error "No support for ARM CPUs (yet)"
#define LJ_ARCH_NAME "arm"
#define LJ_ARCH_BITS 32
#define LJ_ARCH_ENDIAN LUAJIT_LE
#define LJ_ARCH_HASFPU 0
#define LJ_ABI_SOFTFP 1
#define LJ_ABI_EABI 1
#define LJ_TARGET_ARM 1
#define LJ_TARGET_EHRETREG 0
#define LJ_TARGET_MASKSHIFT 0
#define LJ_TARGET_MASKROT 1
#define LJ_ARCH_NOFFI 1
#define LJ_ARCH_NOJIT 1
#elif LUAJIT_TARGET == LUAJIT_ARCH_PPC
#error "No support for plain PowerPC CPUs (yet)"
@@ -150,7 +170,7 @@
#if __GNUC__ < 4
#error "Need at least GCC 4.0 or newer"
#endif
#elif LJ_TARGET_PPC
#elif LJ_TARGET_ARM || LJ_TARGET_PPC
#if (__GNUC__ < 4) || ((__GNUC__ == 4) && __GNUC_MINOR__ < 3)
#error "Need at least GCC 4.3 or newer"
#endif
@@ -163,7 +183,17 @@
/* Check target-specific constraints. */
#ifndef _BUILDVM_H
#if LJ_TARGET_PPC
#if LJ_TARGET_ARM
#if defined(__ARMEB__)
#error "No support for big-endian ARM"
#endif
#if defined(__thumb__) || defined(__thumb2__)
#error "No support for Thumb instruction set (yet)"
#endif
#if !__ARM_EABI__
#error "Only ARM EABI is supported"
#endif
#elif LJ_TARGET_PPC
#if defined(_SOFT_FLOAT) || defined(_SOFT_DOUBLE)
#error "No support for PowerPC CPUs without double-precision FPU"
#endif