diff options
author | Mike Pall <mike> | 2011-12-15 20:39:30 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2011-12-15 20:39:30 +0100 |
commit | b330b468b3f37bd0b11765524548dbdbb1dd1a95 (patch) | |
tree | 2e836bc9c7b5c688c5ecd2b883f3894580d85f29 /src | |
parent | b61be299c9fc00e8d2252fa3f12c6005686783d6 (diff) | |
download | luajit-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/Makefile | 18 | ||||
-rw-r--r-- | src/buildvm.c | 3 | ||||
-rw-r--r-- | src/buildvm_asm.c | 2 | ||||
-rw-r--r-- | src/lib_jit.c | 2 | ||||
-rw-r--r-- | src/lj_arch.h | 24 | ||||
-rw-r--r-- | src/lj_frame.h | 10 |
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= | |||
54 | CCOPT_ARM= | 54 | CCOPT_ARM= |
55 | CCOPT_PPC= | 55 | CCOPT_PPC= |
56 | CCOPT_PPCSPE= | 56 | CCOPT_PPCSPE= |
57 | CCOPT_MIPS= | ||
57 | # | 58 | # |
58 | CCDEBUG= | 59 | CCDEBUG= |
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) |
245 | else | 246 | else |
247 | ifneq (,$(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) | ||
253 | else | ||
246 | $(error Unsupported target architecture) | 254 | $(error Unsupported target architecture) |
247 | endif | 255 | endif |
248 | endif | 256 | endif |
249 | endif | 257 | endif |
250 | endif | 258 | endif |
251 | endif | 259 | endif |
260 | endif | ||
252 | 261 | ||
253 | TARGET_ARCH= $(patsubst %,-DLUAJIT_TARGET=LUAJIT_ARCH_%,$(TARGET_CCARCH)) | 262 | TARGET_ARCH+= $(patsubst %,-DLUAJIT_TARGET=LUAJIT_ARCH_%,$(TARGET_CCARCH)) |
254 | 263 | ||
255 | ifneq (,$(PREFIX)) | 264 | ifneq (,$(PREFIX)) |
256 | ifneq (/usr/local,$(PREFIX)) | 265 | ifneq (/usr/local,$(PREFIX)) |
@@ -353,6 +362,7 @@ DASM_FLAGS_X64WIN= -D X64 -D X64WIN | |||
353 | DASM_FLAGS_ARM= | 362 | DASM_FLAGS_ARM= |
354 | DASM_FLAGS_PPC= | 363 | DASM_FLAGS_PPC= |
355 | DASM_FLAGS_PPCSPE= | 364 | DASM_FLAGS_PPCSPE= |
365 | DASM_FLAGS_MIPS= | ||
356 | 366 | ||
357 | BUILDVM_O= buildvm.o buildvm_asm.o buildvm_peobj.o buildvm_lib.o buildvm_fold.o | 367 | BUILDVM_O= buildvm.o buildvm_asm.o buildvm_peobj.o buildvm_lib.o buildvm_fold.o |
358 | BUILDVM_T= buildvm | 368 | BUILDVM_T= buildvm |
@@ -399,6 +409,7 @@ ALL_HDRGEN= lj_bcdef.h lj_ffdef.h lj_libdef.h lj_recdef.h lj_folddef.h | |||
399 | ALL_GEN= $(LJVM_S) $(ALL_HDRGEN) $(LIB_VMDEFP) | 409 | ALL_GEN= $(LJVM_S) $(ALL_HDRGEN) $(LIB_VMDEFP) |
400 | ALL_DYNGEN= buildvm_x86.h buildvm_x64.h buildvm_x64win.h buildvm_arm.h \ | 410 | ALL_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 | ||
402 | WIN_RM= *.obj *.lib *.exp *.dll *.exe *.manifest *.pdb *.ilk | 413 | WIN_RM= *.obj *.lib *.exp *.dll *.exe *.manifest *.pdb *.ilk |
403 | ALL_RM= $(ALL_T) $(ALL_GEN) *.o $(WIN_RM) | 414 | ALL_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 | ||
495 | depend: | 507 | depend: |
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 | ||
551 | buildvm_mips.h: buildvm_mips.dasc | ||
552 | $(E) "DYNASM $@" | ||
553 | $(Q)$(DASM) $(DASM_FLAGS) $(DASM_FLAGS_MIPS) -o $@ buildvm_mips.dasc | ||
554 | |||
539 | buildvm.o: $(ALL_DYNGEN) $(DASM_DIR)/dasm_*.h | 555 | buildvm.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 |