From 421ab344adbcb71cfb11f3ca33d79cd83dd0d7eb Mon Sep 17 00:00:00 2001 From: MerryMage Date: Thu, 7 Jul 2016 22:03:45 +0800 Subject: [PATCH] EmitX64::EmitTerminalInterpret: Restore RSP before CALL --- src/backend_x64/emit_x64.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/backend_x64/emit_x64.cpp b/src/backend_x64/emit_x64.cpp index cbf5f488..46c0d720 100644 --- a/src/backend_x64/emit_x64.cpp +++ b/src/backend_x64/emit_x64.cpp @@ -430,6 +430,7 @@ void EmitX64::EmitTerminalInterpret(IR::Term::Interpret terminal, Arm::LocationD code->MOV(64, R(ABI_PARAM1), Imm64(terminal.next.arm_pc)); code->MOV(64, R(ABI_PARAM2), Imm64(reinterpret_cast(jit_interface))); code->MOV(32, MJitStateReg(Arm::Reg::PC), R(ABI_PARAM1)); + code->MOV(64, R(RSP), MDisp(R15, offsetof(JitState, save_host_RSP))); code->CALL(reinterpret_cast(cb.InterpreterFallback)); code->JMP(routines->RunCodeReturnAddress(), true); // TODO: Check cycles }