aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2022-04-05 09:55:15 +0200
committerMike Pall <mike>2022-04-05 09:55:15 +0200
commit5e3c45c43bb0e0f1f2917d432e9d2dba12c42a6e (patch)
tree382248ed99dda0a28893d01e24481ee7487f487d /src
parent20aea93915a0d31138cb00e17cc15eb849e3b806 (diff)
downloadluajit-5e3c45c43bb0e0f1f2917d432e9d2dba12c42a6e.tar.gz
luajit-5e3c45c43bb0e0f1f2917d432e9d2dba12c42a6e.tar.bz2
luajit-5e3c45c43bb0e0f1f2917d432e9d2dba12c42a6e.zip
x64: Fix RETHI/RETLO swap after call.
Reported by savilli.
Diffstat (limited to 'src')
-rw-r--r--src/lj_asm.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/lj_asm.c b/src/lj_asm.c
index 32dd7e87..6f5e0c45 100644
--- a/src/lj_asm.c
+++ b/src/lj_asm.c
@@ -847,7 +847,8 @@ static void ra_destpair(ASMState *as, IRIns *ir)
847 if (destlo == RID_RETHI) { 847 if (destlo == RID_RETHI) {
848 if (desthi == RID_RETLO) { 848 if (desthi == RID_RETLO) {
849#if LJ_TARGET_X86ORX64 849#if LJ_TARGET_X86ORX64
850 *--as->mcp = REX_64IR(irx, XI_XCHGa + RID_RETHI); 850 *--as->mcp = XI_XCHGa + RID_RETHI;
851 if (LJ_64 && irt_is64(irx->t)) *--as->mcp = 0x48;
851#else 852#else
852 emit_movrr(as, irx, RID_RETHI, RID_TMP); 853 emit_movrr(as, irx, RID_RETHI, RID_TMP);
853 emit_movrr(as, irx, RID_RETLO, RID_RETHI); 854 emit_movrr(as, irx, RID_RETLO, RID_RETHI);