aboutsummaryrefslogtreecommitdiff
path: root/src/lj_arch.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lj_arch.h')
-rw-r--r--src/lj_arch.h31
1 files changed, 23 insertions, 8 deletions
diff --git a/src/lj_arch.h b/src/lj_arch.h
index d65bc551..3e3581c2 100644
--- a/src/lj_arch.h
+++ b/src/lj_arch.h
@@ -8,6 +8,8 @@
8 8
9#include "lua.h" 9#include "lua.h"
10 10
11/* -- Target definitions -------------------------------------------------- */
12
11/* Target endianess. */ 13/* Target endianess. */
12#define LUAJIT_LE 0 14#define LUAJIT_LE 0
13#define LUAJIT_BE 1 15#define LUAJIT_BE 1
@@ -38,6 +40,14 @@
38#define LUAJIT_OS_BSD 4 40#define LUAJIT_OS_BSD 4
39#define LUAJIT_OS_POSIX 5 41#define LUAJIT_OS_POSIX 5
40 42
43/* Number mode. */
44#define LJ_NUMMODE_SINGLE 0 /* Single-number mode only. */
45#define LJ_NUMMODE_SINGLE_DUAL 1 /* Default to single-number mode. */
46#define LJ_NUMMODE_DUAL 2 /* Dual-number mode only. */
47#define LJ_NUMMODE_DUAL_SINGLE 3 /* Default to dual-number mode. */
48
49/* -- Target detection ---------------------------------------------------- */
50
41/* Select native target if no target defined. */ 51/* Select native target if no target defined. */
42#ifndef LUAJIT_TARGET 52#ifndef LUAJIT_TARGET
43 53
@@ -74,7 +84,10 @@
74 defined(__NetBSD__) || defined(__OpenBSD__) || \ 84 defined(__NetBSD__) || defined(__OpenBSD__) || \
75 defined(__DragonFly__)) && !defined(__ORBIS__) 85 defined(__DragonFly__)) && !defined(__ORBIS__)
76#define LUAJIT_OS LUAJIT_OS_BSD 86#define LUAJIT_OS LUAJIT_OS_BSD
77#elif (defined(__sun__) && defined(__svr4__)) || defined(__HAIKU__) 87#elif (defined(__sun__) && defined(__svr4__))
88#define LJ_TARGET_SOLARIS 1
89#define LUAJIT_OS LUAJIT_OS_POSIX
90#elif defined(__HAIKU__)
78#define LUAJIT_OS LUAJIT_OS_POSIX 91#define LUAJIT_OS LUAJIT_OS_POSIX
79#elif defined(__CYGWIN__) 92#elif defined(__CYGWIN__)
80#define LJ_TARGET_CYGWIN 1 93#define LJ_TARGET_CYGWIN 1
@@ -103,6 +116,7 @@
103#define LJ_TARGET_WINDOWS (LUAJIT_OS == LUAJIT_OS_WINDOWS) 116#define LJ_TARGET_WINDOWS (LUAJIT_OS == LUAJIT_OS_WINDOWS)
104#define LJ_TARGET_LINUX (LUAJIT_OS == LUAJIT_OS_LINUX) 117#define LJ_TARGET_LINUX (LUAJIT_OS == LUAJIT_OS_LINUX)
105#define LJ_TARGET_OSX (LUAJIT_OS == LUAJIT_OS_OSX) 118#define LJ_TARGET_OSX (LUAJIT_OS == LUAJIT_OS_OSX)
119#define LJ_TARGET_BSD (LUAJIT_OS == LUAJIT_OS_BSD)
106#define LJ_TARGET_IOS (LJ_TARGET_OSX && (LUAJIT_TARGET == LUAJIT_ARCH_ARM || LUAJIT_TARGET == LUAJIT_ARCH_ARM64)) 120#define LJ_TARGET_IOS (LJ_TARGET_OSX && (LUAJIT_TARGET == LUAJIT_ARCH_ARM || LUAJIT_TARGET == LUAJIT_ARCH_ARM64))
107#define LJ_TARGET_POSIX (LUAJIT_OS > LUAJIT_OS_WINDOWS) 121#define LJ_TARGET_POSIX (LUAJIT_OS > LUAJIT_OS_WINDOWS)
108#define LJ_TARGET_DLOPEN LJ_TARGET_POSIX 122#define LJ_TARGET_DLOPEN LJ_TARGET_POSIX
@@ -142,10 +156,7 @@
142#endif 156#endif
143#endif 157#endif
144 158
145#define LJ_NUMMODE_SINGLE 0 /* Single-number mode only. */ 159/* -- Arch-specific settings ---------------------------------------------- */
146#define LJ_NUMMODE_SINGLE_DUAL 1 /* Default to single-number mode. */
147#define LJ_NUMMODE_DUAL 2 /* Dual-number mode only. */
148#define LJ_NUMMODE_DUAL_SINGLE 3 /* Default to dual-number mode. */
149 160
150/* Set target architecture properties. */ 161/* Set target architecture properties. */
151#if LUAJIT_TARGET == LUAJIT_ARCH_X86 162#if LUAJIT_TARGET == LUAJIT_ARCH_X86
@@ -407,9 +418,7 @@
407#error "No target architecture defined" 418#error "No target architecture defined"
408#endif 419#endif
409 420
410#ifndef LJ_PAGESIZE 421/* -- Checks for requirements --------------------------------------------- */
411#define LJ_PAGESIZE 4096
412#endif
413 422
414/* Check for minimum required compiler versions. */ 423/* Check for minimum required compiler versions. */
415#if defined(__GNUC__) 424#if defined(__GNUC__)
@@ -485,6 +494,8 @@
485#endif 494#endif
486#endif 495#endif
487 496
497/* -- Derived defines ----------------------------------------------------- */
498
488/* Enable or disable the dual-number mode for the VM. */ 499/* Enable or disable the dual-number mode for the VM. */
489#if (LJ_ARCH_NUMMODE == LJ_NUMMODE_SINGLE && LUAJIT_NUMMODE == 2) || \ 500#if (LJ_ARCH_NUMMODE == LJ_NUMMODE_SINGLE && LUAJIT_NUMMODE == 2) || \
490 (LJ_ARCH_NUMMODE == LJ_NUMMODE_DUAL && LUAJIT_NUMMODE == 1) 501 (LJ_ARCH_NUMMODE == LJ_NUMMODE_DUAL && LUAJIT_NUMMODE == 1)
@@ -582,6 +593,10 @@
582#define LJ_TARGET_UNALIGNED 0 593#define LJ_TARGET_UNALIGNED 0
583#endif 594#endif
584 595
596#ifndef LJ_PAGESIZE
597#define LJ_PAGESIZE 4096
598#endif
599
585/* Various workarounds for embedded operating systems or weak C runtimes. */ 600/* Various workarounds for embedded operating systems or weak C runtimes. */
586#if defined(__ANDROID__) || defined(__symbian__) || LJ_TARGET_XBOX360 || LJ_TARGET_WINDOWS 601#if defined(__ANDROID__) || defined(__symbian__) || LJ_TARGET_XBOX360 || LJ_TARGET_WINDOWS
587#define LUAJIT_NO_LOG2 602#define LUAJIT_NO_LOG2