From f307d0adafc7e35d2dc1c461d50f6572c5e6bca8 Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Sat, 3 Jan 2015 15:28:33 +0100 Subject: ARM64: Add build infrastructure and initial port of interpreter. --- src/host/buildvm.c | 2 ++ src/host/buildvm_asm.c | 9 +++++++++ 2 files changed, 11 insertions(+) (limited to 'src/host') 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); #include "../dynasm/dasm_x86.h" #elif LJ_TARGET_ARM #include "../dynasm/dasm_arm.h" +#elif LJ_TARGET_ARM64 +#include "../dynasm/dasm_arm64.h" #elif LJ_TARGET_PPC #include "../dynasm/dasm_ppc.h" #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, ins, sym); exit(1); } +#elif LJ_TARGET_ARM64 + if ((ins >> 26) == 0x25u) { + fprintf(ctx->fp, "\tbl %s\n", sym); + } else { + fprintf(stderr, + "Error: unsupported opcode %08x for %s symbol relocation.\n", + ins, sym); + exit(1); + } #elif LJ_TARGET_PPC || LJ_TARGET_PPCSPE #if LJ_TARGET_PS3 #define TOCPREFIX "." -- cgit v1.2.3-55-g6feb