From defb68eae263c76e4c1d61161d9b3ddd10e46a87 Mon Sep 17 00:00:00 2001 From: Wunkolo Date: Fri, 3 May 2024 18:07:01 -0700 Subject: [PATCH] [a64] Fix StackLayout Wrong register index and vector-register size --- src/xenia/cpu/backend/a64/a64_backend.cc | 2 +- src/xenia/cpu/backend/a64/a64_stack_layout.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/xenia/cpu/backend/a64/a64_backend.cc b/src/xenia/cpu/backend/a64/a64_backend.cc index 076c1d487..d1780980b 100644 --- a/src/xenia/cpu/backend/a64/a64_backend.cc +++ b/src/xenia/cpu/backend/a64/a64_backend.cc @@ -418,7 +418,7 @@ void A64ThunkEmitter::EmitSaveVolatileRegs() { STR(X15, XSP, offsetof(StackLayout::Thunk, r[15])); STR(X16, XSP, offsetof(StackLayout::Thunk, r[16])); STR(X17, XSP, offsetof(StackLayout::Thunk, r[17])); - STR(X17, XSP, offsetof(StackLayout::Thunk, r[18])); + STR(X18, XSP, offsetof(StackLayout::Thunk, r[18])); STR(Q0, XSP, offsetof(StackLayout::Thunk, xmm[0])); STR(Q1, XSP, offsetof(StackLayout::Thunk, xmm[1])); diff --git a/src/xenia/cpu/backend/a64/a64_stack_layout.h b/src/xenia/cpu/backend/a64/a64_stack_layout.h index 87dc3379c..02db19db2 100644 --- a/src/xenia/cpu/backend/a64/a64_stack_layout.h +++ b/src/xenia/cpu/backend/a64/a64_stack_layout.h @@ -91,7 +91,7 @@ class StackLayout { XEPACKEDSTRUCT(Thunk, { uint64_t arg_temp[3]; uint64_t r[19]; - vec128_t xmm[31]; + vec128_t xmm[32]; }); static_assert(sizeof(Thunk) % 16 == 0, "sizeof(Thunk) must be a multiple of 16!");