]> git.ipfire.org Git - thirdparty/LuaJIT.git/commitdiff
ARM64: Fix disassembly of ldp/stp offsets.
authorMike Pall <mike>
Mon, 6 Nov 2023 22:14:22 +0000 (23:14 +0100)
committerMike Pall <mike>
Mon, 6 Nov 2023 22:14:22 +0000 (23:14 +0100)
Thanks to Peter Cawley. #1113

src/jit/dis_arm64.lua

index a7a294944103ca5d554a82da71470aeb1815d406..84677666285e3e8cfe734a6019a6f36a76a5822a 100644 (file)
@@ -985,8 +985,7 @@ local function disass_ins(ctx)
        x = x.."]"
       end
     elseif p == "P" then
-      local opcv, sh = rshift(op, 26), 2
-      if opcv >= 0x2a then sh = 4 elseif opcv >= 0x1b then sh = 3 end
+      local sh = 2 + rshift(op, 31 - band(rshift(op, 26), 1))
       local imm7 = lshift(arshift(lshift(op, 10), 25), sh)
       local rn = map_regs.x[band(rshift(op, 5), 31)]
       local ind = band(rshift(op, 23), 3)