From: Mike Pall Date: Sat, 9 Sep 2023 21:20:57 +0000 (+0200) Subject: Merge branch 'master' into v2.1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=566532b8071c82125a65ad1bea0d5784991fa7a2;p=thirdparty%2FLuaJIT.git Merge branch 'master' into v2.1 --- 566532b8071c82125a65ad1bea0d5784991fa7a2 diff --cc src/lj_arch.h index 6e22b1b2,e77865d9..3e920f2a --- a/src/lj_arch.h +++ b/src/lj_arch.h @@@ -57,16 -43,16 +57,16 @@@ #define LUAJIT_TARGET LUAJIT_ARCH_X64 #elif defined(__arm__) || defined(__arm) || defined(__ARM__) || defined(__ARM) #define LUAJIT_TARGET LUAJIT_ARCH_ARM +#elif defined(__aarch64__) +#define LUAJIT_TARGET LUAJIT_ARCH_ARM64 #elif defined(__ppc__) || defined(__ppc) || defined(__PPC__) || defined(__PPC) || defined(__powerpc__) || defined(__powerpc) || defined(__POWERPC__) || defined(__POWERPC) || defined(_M_PPC) -#ifdef __NO_FPRS__ -#define LUAJIT_TARGET LUAJIT_ARCH_PPCSPE -#else #define LUAJIT_TARGET LUAJIT_ARCH_PPC -#endif +#elif defined(__mips64__) || defined(__mips64) || defined(__MIPS64__) || defined(__MIPS64) +#define LUAJIT_TARGET LUAJIT_ARCH_MIPS64 #elif defined(__mips__) || defined(__mips) || defined(__MIPS__) || defined(__MIPS) -#define LUAJIT_TARGET LUAJIT_ARCH_MIPS +#define LUAJIT_TARGET LUAJIT_ARCH_MIPS32 #else - #error "No support for this architecture (yet)" + #error "Architecture not supported (in this version), see: https://luajit.org/status.html#architectures" #endif #endif @@@ -325,13 -215,7 +325,14 @@@ #define LJ_TARGET_MASKSHIFT 0 #define LJ_TARGET_MASKROT 1 #define LJ_TARGET_UNIFYROT 1 /* Want only IR_BROL. */ -#define LJ_ARCH_NUMMODE LJ_NUMMODE_DUAL_SINGLE + +#if LJ_TARGET_CONSOLE +#define LJ_ARCH_PPC32ON64 1 +#define LJ_ARCH_NOFFI 1 +#elif LJ_ARCH_BITS == 64 +#error "No support for PPC64" ++#undef LJ_TARGET_PPC +#endif #if _ARCH_PWR7 #define LJ_ARCH_VERSION 70 @@@ -496,30 -336,29 +499,37 @@@ #endif #if !(__ARM_EABI__ || LJ_TARGET_IOS) #error "Only ARM EABI or iOS 3.0+ ABI is supported" + #undef LJ_TARGET_ARM #endif -#elif LJ_TARGET_PPC || LJ_TARGET_PPCSPE -#if defined(_SOFT_FLOAT) || defined(_SOFT_DOUBLE) -#error "No support for PowerPC CPUs without double-precision FPU, use LuaJIT v2.1" -#undef LJ_TARGET_PPC +#elif LJ_TARGET_ARM64 +#if defined(_ILP32) +#error "No support for ILP32 model on ARM64" ++#undef LJ_TARGET_ARM64 #endif +#elif LJ_TARGET_PPC #if defined(_LITTLE_ENDIAN) && (!defined(_BYTE_ORDER) || (_BYTE_ORDER == _LITTLE_ENDIAN)) -#error "No support for little-endian PowerPC" +#error "No support for little-endian PPC32" + #undef LJ_TARGET_PPC #endif -#if defined(_LP64) -#error "No support for PowerPC 64 bit mode" +#if defined(__NO_FPRS__) && !defined(_SOFT_FLOAT) - #error "No support for PPC/e500 anymore (use LuaJIT 2.0)" ++#error "No support for PPC/e500, use LuaJIT 2.0" + #undef LJ_TARGET_PPC #endif -#elif LJ_TARGET_MIPS -#if defined(__mips_soft_float) -#error "No support for MIPS CPUs without FPU, use LuaJIT v2.1+" +#elif LJ_TARGET_MIPS32 +#if !((defined(_MIPS_SIM_ABI32) && _MIPS_SIM == _MIPS_SIM_ABI32) || (defined(_ABIO32) && _MIPS_SIM == _ABIO32)) +#error "Only o32 ABI supported for MIPS32" + #undef LJ_TARGET_MIPS #endif -#if defined(_LP64) -#error "No support for MIPS64, use LuaJIT v2.1+" +#if LJ_TARGET_MIPSR6 +/* Not that useful, since most available r6 CPUs are 64 bit. */ +#error "No support for MIPS32R6" ++#undef LJ_TARGET_MIPS +#endif +#elif LJ_TARGET_MIPS64 +#if !((defined(_MIPS_SIM_ABI64) && _MIPS_SIM == _MIPS_SIM_ABI64) || (defined(_ABI64) && _MIPS_SIM == _ABI64)) +/* MIPS32ON64 aka n32 ABI support might be desirable, but difficult. */ +#error "Only n64 ABI supported for MIPS64" + #undef LJ_TARGET_MIPS #endif #endif #endif