[a64] Fix ResolveFunction thunk

Register was getting stomped over
This commit is contained in:
Wunkolo 2024-05-04 16:12:02 -07:00
parent 725ea3d08c
commit 5b8ac36aa6
1 changed files with 7 additions and 3 deletions

View File

@ -337,8 +337,12 @@ GuestToHostThunk A64ThunkEmitter::EmitGuestToHostThunk() {
uint64_t ResolveFunction(void* raw_context, uint64_t target_address);
ResolveFunctionThunk A64ThunkEmitter::EmitResolveFunctionThunk() {
// ebx = target PPC address
// rcx = context
// Entry:
// X0 = target PPC address
// Resolve Function:
// X0 = context
// X1 = target PPC address
struct _code_offsets {
size_t prolog;
@ -366,8 +370,8 @@ ResolveFunctionThunk A64ThunkEmitter::EmitResolveFunctionThunk() {
// mov(rdx, rbx);
// mov(rax, reinterpret_cast<uint64_t>(&ResolveFunction));
// call(rax)
MOV(X1, X0);
MOV(X0, GetContextReg()); // context
MOV(X1, X1);
MOVP2R(X16, &ResolveFunction);
BLR(X16);