diff options
author | Mike Pall <mike> | 2022-04-05 09:55:15 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2022-04-05 09:55:15 +0200 |
commit | 5e3c45c43bb0e0f1f2917d432e9d2dba12c42a6e (patch) | |
tree | 382248ed99dda0a28893d01e24481ee7487f487d /src | |
parent | 20aea93915a0d31138cb00e17cc15eb849e3b806 (diff) | |
download | luajit-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.c | 3 |
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); |