diff --git a/src/core/arm/nce/interpreter_visitor.cpp b/src/core/arm/nce/interpreter_visitor.cpp index b5f89510ca..be6fee8613 100644 --- a/src/core/arm/nce/interpreter_visitor.cpp +++ b/src/core/arm/nce/interpreter_visitor.cpp @@ -765,8 +765,8 @@ std::optional MatchAndExecuteOneInstruction(Core::Memory::Memory& memory, m fpsimd_context* fpsimd_context) { std::span regs(reinterpret_cast(context->regs), 31); std::span vregs(reinterpret_cast(fpsimd_context->vregs), 32); - u64 sp = context->sp; - const u64 pc = context->pc; + u64& sp = *reinterpret_cast(&context->sp); + const u64& pc = *reinterpret_cast(&context->pc); InterpreterVisitor visitor(memory, regs, vregs, sp, pc); u32 instruction = memory.Read32(pc); @@ -774,7 +774,6 @@ std::optional MatchAndExecuteOneInstruction(Core::Memory::Memory& memory, m auto decoder = Dynarmic::A64::Decode(instruction); was_executed = decoder.get().call(visitor, instruction); - context->sp = sp; return was_executed ? std::optional(pc + 4) : std::nullopt; }