diff options
Diffstat (limited to 'src/host')
-rw-r--r-- | src/host/buildvm.c | 2 | ||||
-rw-r--r-- | src/host/buildvm_asm.c | 9 |
2 files changed, 11 insertions, 0 deletions
diff --git a/src/host/buildvm.c b/src/host/buildvm.c index d56c65ca..d162086e 100644 --- a/src/host/buildvm.c +++ b/src/host/buildvm.c | |||
@@ -59,6 +59,8 @@ static int collect_reloc(BuildCtx *ctx, uint8_t *addr, int idx, int type); | |||
59 | #include "../dynasm/dasm_x86.h" | 59 | #include "../dynasm/dasm_x86.h" |
60 | #elif LJ_TARGET_ARM | 60 | #elif LJ_TARGET_ARM |
61 | #include "../dynasm/dasm_arm.h" | 61 | #include "../dynasm/dasm_arm.h" |
62 | #elif LJ_TARGET_ARM64 | ||
63 | #include "../dynasm/dasm_arm64.h" | ||
62 | #elif LJ_TARGET_PPC | 64 | #elif LJ_TARGET_PPC |
63 | #include "../dynasm/dasm_ppc.h" | 65 | #include "../dynasm/dasm_ppc.h" |
64 | #elif LJ_TARGET_PPCSPE | 66 | #elif LJ_TARGET_PPCSPE |
diff --git a/src/host/buildvm_asm.c b/src/host/buildvm_asm.c index c91f5bcd..7bea4d17 100644 --- a/src/host/buildvm_asm.c +++ b/src/host/buildvm_asm.c | |||
@@ -121,6 +121,15 @@ static void emit_asm_wordreloc(BuildCtx *ctx, uint8_t *p, int n, | |||
121 | ins, sym); | 121 | ins, sym); |
122 | exit(1); | 122 | exit(1); |
123 | } | 123 | } |
124 | #elif LJ_TARGET_ARM64 | ||
125 | if ((ins >> 26) == 0x25u) { | ||
126 | fprintf(ctx->fp, "\tbl %s\n", sym); | ||
127 | } else { | ||
128 | fprintf(stderr, | ||
129 | "Error: unsupported opcode %08x for %s symbol relocation.\n", | ||
130 | ins, sym); | ||
131 | exit(1); | ||
132 | } | ||
124 | #elif LJ_TARGET_PPC || LJ_TARGET_PPCSPE | 133 | #elif LJ_TARGET_PPC || LJ_TARGET_PPCSPE |
125 | #if LJ_TARGET_PS3 | 134 | #if LJ_TARGET_PS3 |
126 | #define TOCPREFIX "." | 135 | #define TOCPREFIX "." |