aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2011-12-15 20:39:30 +0100
committerMike Pall <mike>2011-12-15 20:39:30 +0100
commitb330b468b3f37bd0b11765524548dbdbb1dd1a95 (patch)
tree2e836bc9c7b5c688c5ecd2b883f3894580d85f29 /src
parentb61be299c9fc00e8d2252fa3f12c6005686783d6 (diff)
downloadluajit-b330b468b3f37bd0b11765524548dbdbb1dd1a95.tar.gz
luajit-b330b468b3f37bd0b11765524548dbdbb1dd1a95.tar.bz2
luajit-b330b468b3f37bd0b11765524548dbdbb1dd1a95.zip
MIPS: Add build rules (non-functional, yet).
Diffstat (limited to 'src')
-rw-r--r--src/Makefile18
-rw-r--r--src/buildvm.c3
-rw-r--r--src/buildvm_asm.c2
-rw-r--r--src/lib_jit.c2
-rw-r--r--src/lj_arch.h24
-rw-r--r--src/lj_frame.h10
6 files changed, 58 insertions, 1 deletions
diff --git a/src/Makefile b/src/Makefile
index 3e5b6dc8..5a60612d 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -54,6 +54,7 @@ CCOPT_X64=
54CCOPT_ARM= 54CCOPT_ARM=
55CCOPT_PPC= 55CCOPT_PPC=
56CCOPT_PPCSPE= 56CCOPT_PPCSPE=
57CCOPT_MIPS=
57# 58#
58CCDEBUG= 59CCDEBUG=
59# Uncomment the next line to generate debug information: 60# Uncomment the next line to generate debug information:
@@ -243,14 +244,22 @@ ifneq (,$(findstring LJ_TARGET_PPCSPE ,$(TARGET_TESTARCH)))
243 TARGET_CCARCH= ppcspe 244 TARGET_CCARCH= ppcspe
244 TARGET_XCFLAGS+= $(CCOPT_PPCSPE) 245 TARGET_XCFLAGS+= $(CCOPT_PPCSPE)
245else 246else
247ifneq (,$(findstring LJ_TARGET_MIPS ,$(TARGET_TESTARCH)))
248 ifneq (,$(findstring MIPSEL ,$(TARGET_TESTARCH)))
249 TARGET_ARCH= -D__MIPSEL__=1
250 endif
251 TARGET_CCARCH= mips
252 TARGET_XCFLAGS+= $(CCOPT_MIPS)
253else
246 $(error Unsupported target architecture) 254 $(error Unsupported target architecture)
247endif 255endif
248endif 256endif
249endif 257endif
250endif 258endif
251endif 259endif
260endif
252 261
253TARGET_ARCH= $(patsubst %,-DLUAJIT_TARGET=LUAJIT_ARCH_%,$(TARGET_CCARCH)) 262TARGET_ARCH+= $(patsubst %,-DLUAJIT_TARGET=LUAJIT_ARCH_%,$(TARGET_CCARCH))
254 263
255ifneq (,$(PREFIX)) 264ifneq (,$(PREFIX))
256ifneq (/usr/local,$(PREFIX)) 265ifneq (/usr/local,$(PREFIX))
@@ -353,6 +362,7 @@ DASM_FLAGS_X64WIN= -D X64 -D X64WIN
353DASM_FLAGS_ARM= 362DASM_FLAGS_ARM=
354DASM_FLAGS_PPC= 363DASM_FLAGS_PPC=
355DASM_FLAGS_PPCSPE= 364DASM_FLAGS_PPCSPE=
365DASM_FLAGS_MIPS=
356 366
357BUILDVM_O= buildvm.o buildvm_asm.o buildvm_peobj.o buildvm_lib.o buildvm_fold.o 367BUILDVM_O= buildvm.o buildvm_asm.o buildvm_peobj.o buildvm_lib.o buildvm_fold.o
358BUILDVM_T= buildvm 368BUILDVM_T= buildvm
@@ -399,6 +409,7 @@ ALL_HDRGEN= lj_bcdef.h lj_ffdef.h lj_libdef.h lj_recdef.h lj_folddef.h
399ALL_GEN= $(LJVM_S) $(ALL_HDRGEN) $(LIB_VMDEFP) 409ALL_GEN= $(LJVM_S) $(ALL_HDRGEN) $(LIB_VMDEFP)
400ALL_DYNGEN= buildvm_x86.h buildvm_x64.h buildvm_x64win.h buildvm_arm.h \ 410ALL_DYNGEN= buildvm_x86.h buildvm_x64.h buildvm_x64win.h buildvm_arm.h \
401 buildvm_ppc.h buildvm_ppcspe.h 411 buildvm_ppc.h buildvm_ppcspe.h
412###ALL_DYNGEN+= buildvm_mips.h
402WIN_RM= *.obj *.lib *.exp *.dll *.exe *.manifest *.pdb *.ilk 413WIN_RM= *.obj *.lib *.exp *.dll *.exe *.manifest *.pdb *.ilk
403ALL_RM= $(ALL_T) $(ALL_GEN) *.o $(WIN_RM) 414ALL_RM= $(ALL_T) $(ALL_GEN) *.o $(WIN_RM)
404 415
@@ -491,6 +502,7 @@ distclean: clean
491 $(Q)$(DASM) $(DASM_DISTFLAGS) $(DASM_FLAGS_ARM) -o buildvm_arm.h buildvm_arm.dasc 502 $(Q)$(DASM) $(DASM_DISTFLAGS) $(DASM_FLAGS_ARM) -o buildvm_arm.h buildvm_arm.dasc
492 $(Q)$(DASM) $(DASM_DISTFLAGS) $(DASM_FLAGS_PPC) -o buildvm_ppc.h buildvm_ppc.dasc 503 $(Q)$(DASM) $(DASM_DISTFLAGS) $(DASM_FLAGS_PPC) -o buildvm_ppc.h buildvm_ppc.dasc
493 $(Q)$(DASM) $(DASM_DISTFLAGS) $(DASM_FLAGS_PPCSPE) -o buildvm_ppcspe.h buildvm_ppcspe.dasc 504 $(Q)$(DASM) $(DASM_DISTFLAGS) $(DASM_FLAGS_PPCSPE) -o buildvm_ppcspe.h buildvm_ppcspe.dasc
505 @### $(Q)$(DASM) $(DASM_DISTFLAGS) $(DASM_FLAGS_MIPS) -o buildvm_mips.h buildvm_mips.dasc
494 506
495depend: 507depend:
496 @for file in $(ALL_HDRGEN) $(ALL_DYNGEN); do \ 508 @for file in $(ALL_HDRGEN) $(ALL_DYNGEN); do \
@@ -536,6 +548,10 @@ buildvm_ppcspe.h: buildvm_ppcspe.dasc
536 $(E) "DYNASM $@" 548 $(E) "DYNASM $@"
537 $(Q)$(DASM) $(DASM_FLAGS) $(DASM_FLAGS_PPCSPE) -o $@ buildvm_ppcspe.dasc 549 $(Q)$(DASM) $(DASM_FLAGS) $(DASM_FLAGS_PPCSPE) -o $@ buildvm_ppcspe.dasc
538 550
551buildvm_mips.h: buildvm_mips.dasc
552 $(E) "DYNASM $@"
553 $(Q)$(DASM) $(DASM_FLAGS) $(DASM_FLAGS_MIPS) -o $@ buildvm_mips.dasc
554
539buildvm.o: $(ALL_DYNGEN) $(DASM_DIR)/dasm_*.h 555buildvm.o: $(ALL_DYNGEN) $(DASM_DIR)/dasm_*.h
540 556
541$(BUILDVM_T): $(BUILDVM_O) 557$(BUILDVM_T): $(BUILDVM_O)
diff --git a/src/buildvm.c b/src/buildvm.c
index 3e5d7b1c..43e6d88b 100644
--- a/src/buildvm.c
+++ b/src/buildvm.c
@@ -74,6 +74,9 @@ static int collect_reloc(BuildCtx *ctx, uint8_t *addr, int idx, int type);
74#elif LJ_TARGET_PPCSPE 74#elif LJ_TARGET_PPCSPE
75#include "../dynasm/dasm_ppc.h" 75#include "../dynasm/dasm_ppc.h"
76#include "buildvm_ppcspe.h" 76#include "buildvm_ppcspe.h"
77#elif LJ_TARGET_MIPS
78#include "../dynasm/dasm_mips.h"
79#include "buildvm_mips.h"
77#else 80#else
78#error "No support for this architecture (yet)" 81#error "No support for this architecture (yet)"
79#endif 82#endif
diff --git a/src/buildvm_asm.c b/src/buildvm_asm.c
index 01330456..236dd176 100644
--- a/src/buildvm_asm.c
+++ b/src/buildvm_asm.c
@@ -119,6 +119,8 @@ static void emit_asm_wordreloc(BuildCtx *ctx, uint8_t *p, int n,
119 ins, sym); 119 ins, sym);
120 exit(1); 120 exit(1);
121 } 121 }
122#elif LJ_TARGET_MIPS
123 UNUSED(sym); /* NYI */
122#else 124#else
123#error "missing relocation support for this architecture" 125#error "missing relocation support for this architecture"
124#endif 126#endif
diff --git a/src/lib_jit.c b/src/lib_jit.c
index d4277add..8cb511ca 100644
--- a/src/lib_jit.c
+++ b/src/lib_jit.c
@@ -614,6 +614,8 @@ static uint32_t jit_cpudetect(lua_State *L)
614#endif 614#endif
615#elif LJ_TARGET_PPC || LJ_TARGET_PPCSPE 615#elif LJ_TARGET_PPC || LJ_TARGET_PPCSPE
616 /* Nothing to do. */ 616 /* Nothing to do. */
617#elif LJ_TARGET_MIPS
618 /* NYI */
617#else 619#else
618#error "Missing CPU detection for this architecture" 620#error "Missing CPU detection for this architecture"
619#endif 621#endif
diff --git a/src/lj_arch.h b/src/lj_arch.h
index 50a6ef00..3a52c212 100644
--- a/src/lj_arch.h
+++ b/src/lj_arch.h
@@ -23,6 +23,8 @@
23#define LUAJIT_ARCH_ppc 4 23#define LUAJIT_ARCH_ppc 4
24#define LUAJIT_ARCH_PPCSPE 5 24#define LUAJIT_ARCH_PPCSPE 5
25#define LUAJIT_ARCH_ppcspe 5 25#define LUAJIT_ARCH_ppcspe 5
26#define LUAJIT_ARCH_MIPS 6
27#define LUAJIT_ARCH_mips 6
26 28
27/* Target OS. */ 29/* Target OS. */
28#define LUAJIT_OS_OTHER 0 30#define LUAJIT_OS_OTHER 0
@@ -47,6 +49,8 @@
47#else 49#else
48#define LUAJIT_TARGET LUAJIT_ARCH_PPC 50#define LUAJIT_TARGET LUAJIT_ARCH_PPC
49#endif 51#endif
52#elif defined(__mips__) || defined(__mips) || defined(__MIPS__) || defined(__MIPS)
53#define LUAJIT_TARGET LUAJIT_ARCH_MIPS
50#else 54#else
51#error "No support for this architecture (yet)" 55#error "No support for this architecture (yet)"
52#endif 56#endif
@@ -182,6 +186,26 @@
182#define LJ_ARCH_NOFFI 1 /* NYI: comparisons, calls. */ 186#define LJ_ARCH_NOFFI 1 /* NYI: comparisons, calls. */
183#define LJ_ARCH_NOJIT 1 187#define LJ_ARCH_NOJIT 1
184 188
189#elif LUAJIT_TARGET == LUAJIT_ARCH_MIPS
190
191#define LJ_ARCH_NAME "mips"
192#define LJ_ARCH_BITS 32
193#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL)
194#define LJ_ARCH_ENDIAN LUAJIT_LE
195#else
196#define LJ_ARCH_ENDIAN LUAJIT_BE
197#endif
198#define LJ_ARCH_HASFPU 1
199#define LJ_TARGET_MIPS 1
200#define LJ_TARGET_EHRETREG 4
201#define LJ_TARGET_JUMPRANGE 27 /* 2*2^27 = 256MB-aligned region */
202#define LJ_TARGET_MASKSHIFT 1
203#define LJ_TARGET_MASKROT 1
204#define LJ_TARGET_UNIFYROT 2 /* Want only IR_BROR. */
205#define LJ_ARCH_NUMMODE LJ_NUMMODE_SINGLE
206#define LJ_ARCH_NOFFI 1
207#define LJ_ARCH_NOJIT 1
208
185#else 209#else
186#error "No target architecture defined" 210#error "No target architecture defined"
187#endif 211#endif
diff --git a/src/lj_frame.h b/src/lj_frame.h
index 3497671b..a69917ee 100644
--- a/src/lj_frame.h
+++ b/src/lj_frame.h
@@ -117,6 +117,16 @@ enum {
117#define CFRAME_OFS_MULTRES 8 117#define CFRAME_OFS_MULTRES 8
118#define CFRAME_SIZE 184 118#define CFRAME_SIZE 184
119#define CFRAME_SHIFT_MULTRES 3 119#define CFRAME_SHIFT_MULTRES 3
120#elif LJ_TARGET_MIPS
121/* NYI: Dummy definitions for now. */
122#define CFRAME_OFS_ERRF 0
123#define CFRAME_OFS_NRES 0
124#define CFRAME_OFS_PREV 0
125#define CFRAME_OFS_L 0
126#define CFRAME_OFS_PC 0
127#define CFRAME_OFS_MULTRES 0
128#define CFRAME_SIZE 256
129#define CFRAME_SHIFT_MULTRES 3
120#else 130#else
121#error "Missing CFRAME_* definitions for this architecture" 131#error "Missing CFRAME_* definitions for this architecture"
122#endif 132#endif