summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2012-07-29 12:22:18 +0200
committerMike Pall <mike>2012-07-29 12:22:18 +0200
commite84c2a9e9ae5ed667e554471015a5df3bfd8634a (patch)
tree74dc22fd48c4bdcf9b25062ddb0178060a0f7652
parentb98c1582c9129e7db59e4edaf7236671b36b523c (diff)
downloadluajit-e84c2a9e9ae5ed667e554471015a5df3bfd8634a.tar.gz
luajit-e84c2a9e9ae5ed667e554471015a5df3bfd8634a.tar.bz2
luajit-e84c2a9e9ae5ed667e554471015a5df3bfd8634a.zip
Handle cross-compiles with FPU/no-FPU or hard-fp/soft-fp ABI mismatch.
-rw-r--r--src/Makefile8
-rw-r--r--src/lj_arch.h14
2 files changed, 16 insertions, 6 deletions
diff --git a/src/Makefile b/src/Makefile
index 531f8bab..748a4ed7 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -379,9 +379,15 @@ ifneq (,$(findstring LJ_DUALNUM 1,$(TARGET_TESTARCH)))
379endif 379endif
380ifneq (,$(findstring LJ_ARCH_HASFPU 1,$(TARGET_TESTARCH))) 380ifneq (,$(findstring LJ_ARCH_HASFPU 1,$(TARGET_TESTARCH)))
381 DASM_AFLAGS+= -D FPU 381 DASM_AFLAGS+= -D FPU
382 TARGET_ARCH+= -DLJ_ARCH_HASFPU=1
383else
384 TARGET_ARCH+= -DLJ_ARCH_HASFPU=0
382endif 385endif
383ifeq (,$(findstring LJ_ABI_SOFTFP 1,$(TARGET_TESTARCH))) 386ifeq (,$(findstring LJ_ABI_SOFTFP 1,$(TARGET_TESTARCH)))
384 DASM_AFLAGS+= -D HF 387 DASM_AFLAGS+= -D HFABI
388 TARGET_ARCH+= -DLJ_ABI_SOFTFP=0
389else
390 TARGET_ARCH+= -DLJ_ABI_SOFTFP=1
385endif 391endif
386DASM_AFLAGS+= -D VER=$(subst LJ_ARCH_VERSION_,,$(filter LJ_ARCH_VERSION_%,$(subst LJ_ARCH_VERSION ,LJ_ARCH_VERSION_,$(TARGET_TESTARCH)))) 392DASM_AFLAGS+= -D VER=$(subst LJ_ARCH_VERSION_,,$(filter LJ_ARCH_VERSION_%,$(subst LJ_ARCH_VERSION ,LJ_ARCH_VERSION_,$(TARGET_TESTARCH))))
387ifeq (Windows,$(TARGET_SYS)) 393ifeq (Windows,$(TARGET_SYS))
diff --git a/src/lj_arch.h b/src/lj_arch.h
index a3d51542..8850f8a9 100644
--- a/src/lj_arch.h
+++ b/src/lj_arch.h
@@ -121,7 +121,6 @@
121#define LJ_ARCH_NAME "x86" 121#define LJ_ARCH_NAME "x86"
122#define LJ_ARCH_BITS 32 122#define LJ_ARCH_BITS 32
123#define LJ_ARCH_ENDIAN LUAJIT_LE 123#define LJ_ARCH_ENDIAN LUAJIT_LE
124#define LJ_ARCH_HASFPU 1
125#if LJ_TARGET_WINDOWS || __CYGWIN__ 124#if LJ_TARGET_WINDOWS || __CYGWIN__
126#define LJ_ABI_WIN 1 125#define LJ_ABI_WIN 1
127#else 126#else
@@ -139,7 +138,6 @@
139#define LJ_ARCH_NAME "x64" 138#define LJ_ARCH_NAME "x64"
140#define LJ_ARCH_BITS 64 139#define LJ_ARCH_BITS 64
141#define LJ_ARCH_ENDIAN LUAJIT_LE 140#define LJ_ARCH_ENDIAN LUAJIT_LE
142#define LJ_ARCH_HASFPU 1
143#define LJ_ABI_WIN LJ_TARGET_WINDOWS 141#define LJ_ABI_WIN LJ_TARGET_WINDOWS
144#define LJ_TARGET_X64 1 142#define LJ_TARGET_X64 1
145#define LJ_TARGET_X86ORX64 1 143#define LJ_TARGET_X86ORX64 1
@@ -154,8 +152,12 @@
154#define LJ_ARCH_NAME "arm" 152#define LJ_ARCH_NAME "arm"
155#define LJ_ARCH_BITS 32 153#define LJ_ARCH_BITS 32
156#define LJ_ARCH_ENDIAN LUAJIT_LE 154#define LJ_ARCH_ENDIAN LUAJIT_LE
155#ifndef LJ_ARCH_HASFPU
157#define LJ_ARCH_HASFPU 0 156#define LJ_ARCH_HASFPU 0
157#endif
158#ifndef LJ_ABI_SOFTFP
158#define LJ_ABI_SOFTFP 1 159#define LJ_ABI_SOFTFP 1
160#endif
159#define LJ_ABI_EABI 1 161#define LJ_ABI_EABI 1
160#define LJ_TARGET_ARM 1 162#define LJ_TARGET_ARM 1
161#define LJ_TARGET_EHRETREG 0 163#define LJ_TARGET_EHRETREG 0
@@ -184,7 +186,6 @@
184#define LJ_ARCH_BITS 32 186#define LJ_ARCH_BITS 32
185#endif 187#endif
186#define LJ_ARCH_ENDIAN LUAJIT_BE 188#define LJ_ARCH_ENDIAN LUAJIT_BE
187#define LJ_ARCH_HASFPU 1
188#define LJ_TARGET_PPC 1 189#define LJ_TARGET_PPC 1
189#define LJ_TARGET_EHRETREG 3 190#define LJ_TARGET_EHRETREG 3
190#define LJ_TARGET_JUMPRANGE 25 /* +-2^25 = +-32MB */ 191#define LJ_TARGET_JUMPRANGE 25 /* +-2^25 = +-32MB */
@@ -228,8 +229,9 @@
228#define LJ_ARCH_NAME "ppcspe" 229#define LJ_ARCH_NAME "ppcspe"
229#define LJ_ARCH_BITS 32 230#define LJ_ARCH_BITS 32
230#define LJ_ARCH_ENDIAN LUAJIT_BE 231#define LJ_ARCH_ENDIAN LUAJIT_BE
231#define LJ_ARCH_HASFPU 1 232#ifndef LJ_ABI_SOFTFP
232#define LJ_ABI_SOFTFP 1 233#define LJ_ABI_SOFTFP 1
234#endif
233#define LJ_ABI_EABI 1 235#define LJ_ABI_EABI 1
234#define LJ_TARGET_PPCSPE 1 236#define LJ_TARGET_PPCSPE 1
235#define LJ_TARGET_EHRETREG 3 237#define LJ_TARGET_EHRETREG 3
@@ -251,7 +253,6 @@
251#define LJ_ARCH_ENDIAN LUAJIT_BE 253#define LJ_ARCH_ENDIAN LUAJIT_BE
252#endif 254#endif
253#define LJ_ARCH_BITS 32 255#define LJ_ARCH_BITS 32
254#define LJ_ARCH_HASFPU 1
255#define LJ_TARGET_MIPS 1 256#define LJ_TARGET_MIPS 1
256#define LJ_TARGET_EHRETREG 4 257#define LJ_TARGET_EHRETREG 4
257#define LJ_TARGET_JUMPRANGE 27 /* 2*2^27 = 256MB-aligned region */ 258#define LJ_TARGET_JUMPRANGE 27 /* 2*2^27 = 256MB-aligned region */
@@ -358,6 +359,9 @@
358#define LJ_HASFFI 1 359#define LJ_HASFFI 1
359#endif 360#endif
360 361
362#ifndef LJ_ARCH_HASFPU
363#define LJ_ARCH_HASFPU 1
364#endif
361#define LJ_SOFTFP (!LJ_ARCH_HASFPU) 365#define LJ_SOFTFP (!LJ_ARCH_HASFPU)
362 366
363#if LJ_ARCH_ENDIAN == LUAJIT_BE 367#if LJ_ARCH_ENDIAN == LUAJIT_BE