From 4621f74889969b9c3ad396311df780a3f2fad424 Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Fri, 17 Jan 2025 03:49:28 +1100 Subject: cpu/drcbearm64.cpp, src/drcbec.cpp: Fixed off-by-one errors in map variable handling. --- src/devices/cpu/drcbearm64.cpp | 1 + src/devices/cpu/drcbec.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/devices/cpu/drcbearm64.cpp b/src/devices/cpu/drcbearm64.cpp index fa625ba5953..5929c53583b 100644 --- a/src/devices/cpu/drcbearm64.cpp +++ b/src/devices/cpu/drcbearm64.cpp @@ -1625,6 +1625,7 @@ void drcbe_arm64::op_recover(a64::Assembler &a, const uml::instruction &inst) get_imm_relative(a, REG_PARAM1, m_drcmap_get_value.obj); a.ldr(REG_PARAM2, arm::Mem(a64::x29, -8)); // saved LR (x30) from first level CALLH/EXH or failed hash jump + a.sub(REG_PARAM2, REG_PARAM2, 4); a.mov(REG_PARAM3, inst.param(1).mapvar()); call_arm_addr(a, m_drcmap_get_value.func); diff --git a/src/devices/cpu/drcbec.cpp b/src/devices/cpu/drcbec.cpp index 8758b1989c7..d2fa0e744ab 100644 --- a/src/devices/cpu/drcbec.cpp +++ b/src/devices/cpu/drcbec.cpp @@ -676,7 +676,7 @@ int drcbe_c::execute(code_handle &entry) case MAKE_OPCODE_SHORT(OP_RECOVER, 4, 0): // RECOVER dst,mapvar assert(sp > 0); - PARAM0 = m_map.get_value((drccodeptr)callstack[0], MAPVAR_M0 + PARAM1); + PARAM0 = m_map.get_value(drccodeptr(callstack[0] - 1), PARAM1); break; -- cgit v1.2.3