[x64/Linux] Ensure EmitHostToGuestThunk saves rsi

This commit is contained in:
Herman S.
2025-10-15 11:57:49 +09:00
parent 83ff0c501b
commit 2abf91603e

View File

@@ -693,10 +693,14 @@ HostToGuestThunk X64HelperEmitter::EmitHostToGuestThunk() {
EmitSaveNonvolatileRegs();
mov(rax, rdi);
// mov(rsi, rsi); // context
// Save context register (RSI is volatile on Linux/Mac System V ABI, but we
// need it preserved)
mov(qword[rsp + offsetof(StackLayout::Thunk, xmm[0])], rsi);
mov(rdi, ptr[rsi + offsetof(ppc::PPCContext, virtual_membase)]); // membase
mov(rcx, rdx); // return address
call(rax);
// Restore context register
mov(rsi, qword[rsp + offsetof(StackLayout::Thunk, xmm[0])]);
EmitLoadNonvolatileRegs();