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.h68
1 files changed, 63 insertions, 5 deletions
diff --git a/src/lj_arch.h b/src/lj_arch.h
index 7f1fe93c..f9cb12e7 100644
--- a/src/lj_arch.h
+++ b/src/lj_arch.h
@@ -8,7 +8,6 @@
8 8
9#include "lua.h" 9#include "lua.h"
10 10
11
12/* Target endianess. */ 11/* Target endianess. */
13#define LUAJIT_LE 0 12#define LUAJIT_LE 0
14#define LUAJIT_BE 1 13#define LUAJIT_BE 1
@@ -23,6 +22,13 @@
23#define LUAJIT_ARCH_PPCSPE 4 22#define LUAJIT_ARCH_PPCSPE 4
24#define LUAJIT_ARCH_ppcspe 4 23#define LUAJIT_ARCH_ppcspe 4
25 24
25/* Target OS. */
26#define LUAJIT_OS_OTHER 0
27#define LUAJIT_OS_WINDOWS 1
28#define LUAJIT_OS_LINUX 2
29#define LUAJIT_OS_OSX 3
30#define LUAJIT_OS_BSD 4
31#define LUAJIT_OS_POSIX 5
26 32
27/* Select native target if no target defined. */ 33/* Select native target if no target defined. */
28#ifndef LUAJIT_TARGET 34#ifndef LUAJIT_TARGET
@@ -43,15 +49,58 @@
43 49
44#endif 50#endif
45 51
46/* Set target properties. */ 52/* Select native OS if no target OS defined. */
53#ifndef LUAJIT_OS
54
55#if defined(_WIN32)
56#define LUAJIT_OS LUAJIT_OS_WINDOWS
57#elif defined(__linux__)
58#define LUAJIT_OS LUAJIT_OS_LINUX
59#elif defined(__MACH__) && defined(__APPLE__)
60#define LUAJIT_OS LUAJIT_OS_OSX
61#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || \
62 defined(__NetBSD__) || defined(__OpenBSD__)
63#define LUAJIT_OS LUAJIT_OS_BSD
64#elif defined(__solaris__) || defined(__CYGWIN__)
65#define LUAJIT_OS LUAJIT_OS_POSIX
66#else
67#define LUAJIT_OS LUAJIT_OS_OTHER
68#endif
69
70#endif
71
72/* Set target OS properties. */
73#if LUAJIT_OS == LUAJIT_OS_WINDOWS
74#define LJ_OS_NAME "Windows"
75#elif LUAJIT_OS == LUAJIT_OS_LINUX
76#define LJ_OS_NAME "Linux"
77#elif LUAJIT_OS == LUAJIT_OS_OSX
78#define LJ_OS_NAME "OSX"
79#elif LUAJIT_OS == LUAJIT_OS_BSD
80#define LJ_OS_NAME "BSD"
81#elif LUAJIT_OS == LUAJIT_OS_POSIX
82#define LJ_OS_NAME "Posix"
83#else
84#define LJ_OS_NAME "Other"
85#endif
86
87#define LJ_TARGET_WINDOWS (LUAJIT_OS == LUAJIT_OS_WINDOWS)
88#define LJ_TARGET_LINUX (LUAJIT_OS == LUAJIT_OS_LINUX)
89#define LJ_TARGET_OSX (LUAJIT_OS == LUAJIT_OS_OSX)
90#define LJ_TARGET_POSIX (LUAJIT_OS > LUAJIT_OS_WINDOWS)
91#define LJ_TARGET_DLOPEN LJ_TARGET_POSIX
92
93/* Set target architecture properties. */
47#if LUAJIT_TARGET == LUAJIT_ARCH_X86 94#if LUAJIT_TARGET == LUAJIT_ARCH_X86
48 95
49#define LJ_ARCH_NAME "x86" 96#define LJ_ARCH_NAME "x86"
50#define LJ_ARCH_BITS 32 97#define LJ_ARCH_BITS 32
51#define LJ_ARCH_ENDIAN LUAJIT_LE 98#define LJ_ARCH_ENDIAN LUAJIT_LE
99#define LJ_ARCH_BITENDIAN LUAJIT_LE
100#define LJ_ARCH_HASFPU 1
101#define LJ_ABI_WIN LJ_TARGET_WINDOWS
52#define LJ_TARGET_X86 1 102#define LJ_TARGET_X86 1
53#define LJ_TARGET_X86ORX64 1 103#define LJ_TARGET_X86ORX64 1
54#define LJ_PAGESIZE 4096
55#define LJ_TARGET_EHRETREG 0 104#define LJ_TARGET_EHRETREG 0
56#define LJ_TARGET_MASKSHIFT 1 105#define LJ_TARGET_MASKSHIFT 1
57#define LJ_TARGET_MASKROT 1 106#define LJ_TARGET_MASKROT 1
@@ -61,9 +110,11 @@
61#define LJ_ARCH_NAME "x64" 110#define LJ_ARCH_NAME "x64"
62#define LJ_ARCH_BITS 64 111#define LJ_ARCH_BITS 64
63#define LJ_ARCH_ENDIAN LUAJIT_LE 112#define LJ_ARCH_ENDIAN LUAJIT_LE
113#define LJ_ARCH_BITENDIAN LUAJIT_LE
114#define LJ_ARCH_HASFPU 1
115#define LJ_ABI_WIN LJ_TARGET_WINDOWS
64#define LJ_TARGET_X64 1 116#define LJ_TARGET_X64 1
65#define LJ_TARGET_X86ORX64 1 117#define LJ_TARGET_X86ORX64 1
66#define LJ_PAGESIZE 4096
67#define LJ_TARGET_EHRETREG 0 118#define LJ_TARGET_EHRETREG 0
68#define LJ_TARGET_MASKSHIFT 1 119#define LJ_TARGET_MASKSHIFT 1
69#define LJ_TARGET_MASKROT 1 120#define LJ_TARGET_MASKROT 1
@@ -77,9 +128,12 @@
77#define LJ_ARCH_NAME "ppcspe" 128#define LJ_ARCH_NAME "ppcspe"
78#define LJ_ARCH_BITS 32 129#define LJ_ARCH_BITS 32
79#define LJ_ARCH_ENDIAN LUAJIT_BE 130#define LJ_ARCH_ENDIAN LUAJIT_BE
131#define LJ_ARCH_BITENDIAN LUAJIT_BE
132#define LJ_ARCH_HASFPU 1
133#define LJ_ABI_SOFTFP 1
134#define LJ_ABI_EABI 1
80#define LJ_TARGET_PPC 1 135#define LJ_TARGET_PPC 1
81#define LJ_TARGET_PPCSPE 1 136#define LJ_TARGET_PPCSPE 1
82#define LJ_PAGESIZE 4096
83#define LJ_TARGET_EHRETREG 3 137#define LJ_TARGET_EHRETREG 3
84#define LJ_TARGET_MASKSHIFT 0 138#define LJ_TARGET_MASKSHIFT 0
85#define LJ_TARGET_MASKROT 1 139#define LJ_TARGET_MASKROT 1
@@ -89,6 +143,10 @@
89#error "No target architecture defined" 143#error "No target architecture defined"
90#endif 144#endif
91 145
146#ifndef LJ_PAGESIZE
147#define LJ_PAGESIZE 4096
148#endif
149
92/* Check for minimum required compiler versions. */ 150/* Check for minimum required compiler versions. */
93#if defined(__GNUC__) 151#if defined(__GNUC__)
94#if LJ_TARGET_X64 152#if LJ_TARGET_X64