diff options
Diffstat (limited to 'src/jit')
-rw-r--r-- | src/jit/bcsave.lua | 8 | ||||
-rw-r--r-- | src/jit/dis_arm64be.lua | 12 |
2 files changed, 16 insertions, 4 deletions
diff --git a/src/jit/bcsave.lua b/src/jit/bcsave.lua index 9ee22a01..c17c88e0 100644 --- a/src/jit/bcsave.lua +++ b/src/jit/bcsave.lua | |||
@@ -63,8 +63,8 @@ local map_type = { | |||
63 | } | 63 | } |
64 | 64 | ||
65 | local map_arch = { | 65 | local map_arch = { |
66 | x86 = true, x64 = true, arm = true, arm64 = true, ppc = true, | 66 | x86 = true, x64 = true, arm = true, arm64 = true, arm64be = true, |
67 | mips = true, mipsel = true, | 67 | ppc = true, mips = true, mipsel = true, |
68 | } | 68 | } |
69 | 69 | ||
70 | local map_os = { | 70 | local map_os = { |
@@ -200,7 +200,7 @@ typedef struct { | |||
200 | ]] | 200 | ]] |
201 | local symname = LJBC_PREFIX..ctx.modname | 201 | local symname = LJBC_PREFIX..ctx.modname |
202 | local is64, isbe = false, false | 202 | local is64, isbe = false, false |
203 | if ctx.arch == "x64" or ctx.arch == "arm64" then | 203 | if ctx.arch == "x64" or ctx.arch == "arm64" or ctx.arch == "arm64be" then |
204 | is64 = true | 204 | is64 = true |
205 | elseif ctx.arch == "ppc" or ctx.arch == "mips" then | 205 | elseif ctx.arch == "ppc" or ctx.arch == "mips" then |
206 | isbe = true | 206 | isbe = true |
@@ -237,7 +237,7 @@ typedef struct { | |||
237 | hdr.eendian = isbe and 2 or 1 | 237 | hdr.eendian = isbe and 2 or 1 |
238 | hdr.eversion = 1 | 238 | hdr.eversion = 1 |
239 | hdr.type = f16(1) | 239 | hdr.type = f16(1) |
240 | hdr.machine = f16(({ x86=3, x64=62, arm=40, arm64=183, ppc=20, mips=8, mipsel=8 })[ctx.arch]) | 240 | hdr.machine = f16(({ x86=3, x64=62, arm=40, arm64=183, arm64be=183, ppc=20, mips=8, mipsel=8 })[ctx.arch]) |
241 | if ctx.arch == "mips" or ctx.arch == "mipsel" then | 241 | if ctx.arch == "mips" or ctx.arch == "mipsel" then |
242 | hdr.flags = f32(0x50001006) | 242 | hdr.flags = f32(0x50001006) |
243 | end | 243 | end |
diff --git a/src/jit/dis_arm64be.lua b/src/jit/dis_arm64be.lua new file mode 100644 index 00000000..7eb389e2 --- /dev/null +++ b/src/jit/dis_arm64be.lua | |||
@@ -0,0 +1,12 @@ | |||
1 | ---------------------------------------------------------------------------- | ||
2 | -- LuaJIT ARM64BE disassembler wrapper module. | ||
3 | -- | ||
4 | -- Copyright (C) 2005-2017 Mike Pall. All rights reserved. | ||
5 | -- Released under the MIT license. See Copyright Notice in luajit.h | ||
6 | ---------------------------------------------------------------------------- | ||
7 | -- ARM64 instructions are always little-endian. So just forward to the | ||
8 | -- common ARM64 disassembler module. All the interesting stuff is there. | ||
9 | ------------------------------------------------------------------------------ | ||
10 | |||
11 | return require((string.match(..., ".*%.") or "").."dis_arm64") | ||
12 | |||