diff options
Diffstat (limited to 'src/lj_arch.h')
-rw-r--r-- | src/lj_arch.h | 42 |
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 |