diff options
author | Mike Pall <mike> | 2015-01-03 15:28:33 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2015-01-03 15:28:33 +0100 |
commit | f307d0adafc7e35d2dc1c461d50f6572c5e6bca8 (patch) | |
tree | 0ce471fc05dad49f3e5d60338034ff8a4a9904f8 /src/lj_arch.h | |
parent | cb481ddc8f9d92913ba07d998f4274bbf9711077 (diff) | |
download | luajit-f307d0adafc7e35d2dc1c461d50f6572c5e6bca8.tar.gz luajit-f307d0adafc7e35d2dc1c461d50f6572c5e6bca8.tar.bz2 luajit-f307d0adafc7e35d2dc1c461d50f6572c5e6bca8.zip |
ARM64: Add build infrastructure and initial port of interpreter.
Diffstat (limited to 'src/lj_arch.h')
-rw-r--r-- | src/lj_arch.h | 41 |
1 files changed, 35 insertions, 6 deletions
diff --git a/src/lj_arch.h b/src/lj_arch.h index 18555b41..0d69d528 100644 --- a/src/lj_arch.h +++ b/src/lj_arch.h | |||
@@ -19,12 +19,14 @@ | |||
19 | #define LUAJIT_ARCH_x64 2 | 19 | #define LUAJIT_ARCH_x64 2 |
20 | #define LUAJIT_ARCH_ARM 3 | 20 | #define LUAJIT_ARCH_ARM 3 |
21 | #define LUAJIT_ARCH_arm 3 | 21 | #define LUAJIT_ARCH_arm 3 |
22 | #define LUAJIT_ARCH_PPC 4 | 22 | #define LUAJIT_ARCH_ARM64 4 |
23 | #define LUAJIT_ARCH_ppc 4 | 23 | #define LUAJIT_ARCH_arm64 4 |
24 | #define LUAJIT_ARCH_PPCSPE 5 | 24 | #define LUAJIT_ARCH_PPC 5 |
25 | #define LUAJIT_ARCH_ppcspe 5 | 25 | #define LUAJIT_ARCH_ppc 6 |
26 | #define LUAJIT_ARCH_MIPS 6 | 26 | #define LUAJIT_ARCH_PPCSPE 6 |
27 | #define LUAJIT_ARCH_mips 6 | 27 | #define LUAJIT_ARCH_ppcspe 6 |
28 | #define LUAJIT_ARCH_MIPS 7 | ||
29 | #define LUAJIT_ARCH_mips 7 | ||
28 | 30 | ||
29 | /* Target OS. */ | 31 | /* Target OS. */ |
30 | #define LUAJIT_OS_OTHER 0 | 32 | #define LUAJIT_OS_OTHER 0 |
@@ -43,6 +45,8 @@ | |||
43 | #define LUAJIT_TARGET LUAJIT_ARCH_X64 | 45 | #define LUAJIT_TARGET LUAJIT_ARCH_X64 |
44 | #elif defined(__arm__) || defined(__arm) || defined(__ARM__) || defined(__ARM) | 46 | #elif defined(__arm__) || defined(__arm) || defined(__ARM__) || defined(__ARM) |
45 | #define LUAJIT_TARGET LUAJIT_ARCH_ARM | 47 | #define LUAJIT_TARGET LUAJIT_ARCH_ARM |
48 | #elif defined(__aarch64__) | ||
49 | #define LUAJIT_TARGET LUAJIT_ARCH_ARM64 | ||
46 | #elif defined(__ppc__) || defined(__ppc) || defined(__PPC__) || defined(__PPC) || defined(__powerpc__) || defined(__powerpc) || defined(__POWERPC__) || defined(__POWERPC) || defined(_M_PPC) | 50 | #elif defined(__ppc__) || defined(__ppc) || defined(__PPC__) || defined(__PPC) || defined(__powerpc__) || defined(__powerpc) || defined(__POWERPC__) || defined(__POWERPC) || defined(_M_PPC) |
47 | #ifdef __NO_FPRS__ | 51 | #ifdef __NO_FPRS__ |
48 | #define LUAJIT_TARGET LUAJIT_ARCH_PPCSPE | 52 | #define LUAJIT_TARGET LUAJIT_ARCH_PPCSPE |
@@ -191,6 +195,24 @@ | |||
191 | #define LJ_ARCH_VERSION 50 | 195 | #define LJ_ARCH_VERSION 50 |
192 | #endif | 196 | #endif |
193 | 197 | ||
198 | #elif LUAJIT_TARGET == LUAJIT_ARCH_ARM64 | ||
199 | |||
200 | #define LJ_ARCH_NAME "arm64" | ||
201 | #define LJ_ARCH_BITS 64 | ||
202 | #define LJ_ARCH_ENDIAN LUAJIT_LE | ||
203 | #define LJ_TARGET_ARM64 1 | ||
204 | #define LJ_TARGET_EHRETREG 0 | ||
205 | #define LJ_TARGET_JUMPRANGE 27 /* +-2^27 = +-128MB */ | ||
206 | #define LJ_TARGET_MASKSHIFT 1 | ||
207 | #define LJ_TARGET_MASKROT 1 | ||
208 | #define LJ_TARGET_UNIFYROT 2 /* Want only IR_BROR. */ | ||
209 | #define LJ_TARGET_GC64 1 | ||
210 | #define LJ_ARCH_NUMMODE LJ_NUMMODE_DUAL | ||
211 | #define LJ_ARCH_NOFFI 1 /* NYI */ | ||
212 | #define LJ_ARCH_NOJIT 1 /* NYI */ | ||
213 | |||
214 | #define LJ_ARCH_VERSION 80 | ||
215 | |||
194 | #elif LUAJIT_TARGET == LUAJIT_ARCH_PPC | 216 | #elif LUAJIT_TARGET == LUAJIT_ARCH_PPC |
195 | 217 | ||
196 | #define LJ_ARCH_NAME "ppc" | 218 | #define LJ_ARCH_NAME "ppc" |
@@ -327,6 +349,13 @@ | |||
327 | #if !(__ARM_EABI__ || LJ_TARGET_IOS) | 349 | #if !(__ARM_EABI__ || LJ_TARGET_IOS) |
328 | #error "Only ARM EABI or iOS 3.0+ ABI is supported" | 350 | #error "Only ARM EABI or iOS 3.0+ ABI is supported" |
329 | #endif | 351 | #endif |
352 | #elif LJ_TARGET_ARM64 | ||
353 | #if defined(__AARCH64EB__) | ||
354 | #error "No support for big-endian ARM64" | ||
355 | #endif | ||
356 | #if defined(_ILP32) | ||
357 | #error "No support for ILP32 model on ARM64" | ||
358 | #endif | ||
330 | #elif LJ_TARGET_PPC || LJ_TARGET_PPCSPE | 359 | #elif LJ_TARGET_PPC || LJ_TARGET_PPCSPE |
331 | #if defined(_SOFT_FLOAT) || defined(_SOFT_DOUBLE) | 360 | #if defined(_SOFT_FLOAT) || defined(_SOFT_DOUBLE) |
332 | #error "No support for PowerPC CPUs without double-precision FPU" | 361 | #error "No support for PowerPC CPUs without double-precision FPU" |