summaryrefslogtreecommitdiff
path: root/src/lj_arch.h
diff options
context:
space:
mode:
authorMike Pall <mike>2015-01-03 15:28:33 +0100
committerMike Pall <mike>2015-01-03 15:28:33 +0100
commitf307d0adafc7e35d2dc1c461d50f6572c5e6bca8 (patch)
tree0ce471fc05dad49f3e5d60338034ff8a4a9904f8 /src/lj_arch.h
parentcb481ddc8f9d92913ba07d998f4274bbf9711077 (diff)
downloadluajit-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.h41
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"