aboutsummaryrefslogtreecommitdiff
path: root/src/lj_arch.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lj_arch.h')
-rw-r--r--src/lj_arch.h42
1 files changed, 36 insertions, 6 deletions
diff --git a/src/lj_arch.h b/src/lj_arch.h
index 199e3b19..e7722315 100644
--- a/src/lj_arch.h
+++ b/src/lj_arch.h
@@ -17,10 +17,12 @@
17#define LUAJIT_ARCH_x86 1 17#define LUAJIT_ARCH_x86 1
18#define LUAJIT_ARCH_X64 2 18#define LUAJIT_ARCH_X64 2
19#define LUAJIT_ARCH_x64 2 19#define LUAJIT_ARCH_x64 2
20#define LUAJIT_ARCH_PPC 3 20#define LUAJIT_ARCH_ARM 3
21#define LUAJIT_ARCH_ppc 3 21#define LUAJIT_ARCH_arm 3
22#define LUAJIT_ARCH_PPCSPE 4 22#define LUAJIT_ARCH_PPC 4
23#define LUAJIT_ARCH_ppcspe 4 23#define LUAJIT_ARCH_ppc 4
24#define LUAJIT_ARCH_PPCSPE 5
25#define LUAJIT_ARCH_ppcspe 5
24 26
25/* Target OS. */ 27/* Target OS. */
26#define LUAJIT_OS_OTHER 0 28#define LUAJIT_OS_OTHER 0
@@ -37,6 +39,8 @@
37#define LUAJIT_TARGET LUAJIT_ARCH_X86 39#define LUAJIT_TARGET LUAJIT_ARCH_X86
38#elif defined(__x86_64__) || defined(__x86_64) || defined(_M_X64) || defined(_M_AMD64) 40#elif defined(__x86_64__) || defined(__x86_64) || defined(_M_X64) || defined(_M_AMD64)
39#define LUAJIT_TARGET LUAJIT_ARCH_X64 41#define LUAJIT_TARGET LUAJIT_ARCH_X64
42#elif defined(__arm__) || defined(__arm) || defined(__ARM__) || defined(__ARM)
43#define LUAJIT_TARGET LUAJIT_ARCH_ARM
40#elif defined(__ppc__) || defined(__ppc) || defined(__PPC__) || defined(__PPC) || defined(__powerpc__) || defined(__powerpc) || defined(__POWERPC__) || defined(__POWERPC) || defined(_M_PPC) 44#elif defined(__ppc__) || defined(__ppc) || defined(__PPC__) || defined(__PPC) || defined(__powerpc__) || defined(__powerpc) || defined(__POWERPC__) || defined(__POWERPC) || defined(_M_PPC)
41#ifdef __NO_FPRS__ 45#ifdef __NO_FPRS__
42#define LUAJIT_TARGET LUAJIT_ARCH_PPCSPE 46#define LUAJIT_TARGET LUAJIT_ARCH_PPCSPE
@@ -117,6 +121,22 @@
117#define LJ_TARGET_MASKSHIFT 1 121#define LJ_TARGET_MASKSHIFT 1
118#define LJ_TARGET_MASKROT 1 122#define LJ_TARGET_MASKROT 1
119 123
124#elif LUAJIT_TARGET == LUAJIT_ARCH_ARM
125
126#error "No support for ARM CPUs (yet)"
127#define LJ_ARCH_NAME "arm"
128#define LJ_ARCH_BITS 32
129#define LJ_ARCH_ENDIAN LUAJIT_LE
130#define LJ_ARCH_HASFPU 0
131#define LJ_ABI_SOFTFP 1
132#define LJ_ABI_EABI 1
133#define LJ_TARGET_ARM 1
134#define LJ_TARGET_EHRETREG 0
135#define LJ_TARGET_MASKSHIFT 0
136#define LJ_TARGET_MASKROT 1
137#define LJ_ARCH_NOFFI 1
138#define LJ_ARCH_NOJIT 1
139
120#elif LUAJIT_TARGET == LUAJIT_ARCH_PPC 140#elif LUAJIT_TARGET == LUAJIT_ARCH_PPC
121 141
122#error "No support for plain PowerPC CPUs (yet)" 142#error "No support for plain PowerPC CPUs (yet)"
@@ -150,7 +170,7 @@
150#if __GNUC__ < 4 170#if __GNUC__ < 4
151#error "Need at least GCC 4.0 or newer" 171#error "Need at least GCC 4.0 or newer"
152#endif 172#endif
153#elif LJ_TARGET_PPC 173#elif LJ_TARGET_ARM || LJ_TARGET_PPC
154#if (__GNUC__ < 4) || ((__GNUC__ == 4) && __GNUC_MINOR__ < 3) 174#if (__GNUC__ < 4) || ((__GNUC__ == 4) && __GNUC_MINOR__ < 3)
155#error "Need at least GCC 4.3 or newer" 175#error "Need at least GCC 4.3 or newer"
156#endif 176#endif
@@ -163,7 +183,17 @@
163 183
164/* Check target-specific constraints. */ 184/* Check target-specific constraints. */
165#ifndef _BUILDVM_H 185#ifndef _BUILDVM_H
166#if LJ_TARGET_PPC 186#if LJ_TARGET_ARM
187#if defined(__ARMEB__)
188#error "No support for big-endian ARM"
189#endif
190#if defined(__thumb__) || defined(__thumb2__)
191#error "No support for Thumb instruction set (yet)"
192#endif
193#if !__ARM_EABI__
194#error "Only ARM EABI is supported"
195#endif
196#elif LJ_TARGET_PPC
167#if defined(_SOFT_FLOAT) || defined(_SOFT_DOUBLE) 197#if defined(_SOFT_FLOAT) || defined(_SOFT_DOUBLE)
168#error "No support for PowerPC CPUs without double-precision FPU" 198#error "No support for PowerPC CPUs without double-precision FPU"
169#endif 199#endif