]> git.ipfire.org Git - thirdparty/LuaJIT.git/commitdiff
x64: Fix RETHI/RETLO swap after call.
authorMike Pall <mike>
Tue, 5 Apr 2022 07:55:15 +0000 (09:55 +0200)
committerMike Pall <mike>
Tue, 5 Apr 2022 07:55:15 +0000 (09:55 +0200)
Reported by savilli.

src/lj_asm.c

index 32dd7e876ad82122fe259c8bae9ddaa4e4a52910..6f5e0c45b1ad34f742a889adacde8930df448eb8 100644 (file)
@@ -847,7 +847,8 @@ static void ra_destpair(ASMState *as, IRIns *ir)
   if (destlo == RID_RETHI) {
     if (desthi == RID_RETLO) {
 #if LJ_TARGET_X86ORX64
-      *--as->mcp = REX_64IR(irx, XI_XCHGa + RID_RETHI);
+      *--as->mcp = XI_XCHGa + RID_RETHI;
+      if (LJ_64 && irt_is64(irx->t)) *--as->mcp = 0x48;
 #else
       emit_movrr(as, irx, RID_RETHI, RID_TMP);
       emit_movrr(as, irx, RID_RETLO, RID_RETHI);