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 |
