diff --git a/dynasm/dasm_arm64.h b/dynasm/dasm_arm64.h index 0c817f9..9a8a39a 100644 --- a/dynasm/dasm_arm64.h +++ b/dynasm/dasm_arm64.h @@ -447,7 +447,7 @@ int dasm_encode(Dst_DECL, void *buffer) n = DASM_EXTERN(Dst, (unsigned char *)cp, (ins&2047), !(ins&2048)); goto patchrel; case DASM_ALIGN: - ins &= 255; while ((((char *)cp - base) & ins)) *cp++ = 0xe1a00000; + ins &= 255; while ((((char *)cp - base) & ins)) *cp++ = 0xd503201f; break; case DASM_REL_LG: if (n < 0) { diff --git a/dynasm/dasm_arm64.lua b/dynasm/dasm_arm64.lua index 05954c3..7e9c4cb 100644 --- a/dynasm/dasm_arm64.lua +++ b/dynasm/dasm_arm64.lua @@ -248,7 +248,7 @@ local map_cond = { local parse_reg_type -local function parse_reg(expr, shift, skip_vreg) +local function parse_reg(expr, shift, no_vreg) if not expr then werror("expected register name") end local tname, ovreg = match(expr, "^([%w_]+):(@?%l%d+)$") if not tname then @@ -281,7 +281,7 @@ local function parse_reg(expr, shift, skip_vreg) elseif parse_reg_type ~= vrt then werror("register size mismatch") end - if not skip_vreg then waction("VREG", shift, vreg) end + if not no_vreg then waction("VREG", shift, vreg) end return 0 end werror("bad register name `"..expr.."'") @@ -638,7 +638,7 @@ local function alias_bfx(p) end local function alias_bfiz(p) - parse_reg(p[1], 0) + parse_reg(p[1], 0, true) if parse_reg_type == "w" then p[3] = "#(32-("..p[3]:sub(2).."))%32" p[4] = "#("..p[4]:sub(2)..")-1"