From ad42a9c8458abc0de72ba0845a02b4801f950268 Mon Sep 17 00:00:00 2001 From: Exverge Date: Fri, 7 Aug 2026 20:43:47 -0400 Subject: [PATCH] [dynarmic] fix x86 page table lookup --- .../src/dynarmic/backend/x64/emit_x64_memory.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/dynarmic/src/dynarmic/backend/x64/emit_x64_memory.h b/src/dynarmic/src/dynarmic/backend/x64/emit_x64_memory.h index 8cb8f7b34f..ead16fdc47 100644 --- a/src/dynarmic/src/dynarmic/backend/x64/emit_x64_memory.h +++ b/src/dynarmic/src/dynarmic/backend/x64/emit_x64_memory.h @@ -161,14 +161,14 @@ template<> // check for marked bit, use as unmapped if marked if (ctx.conf.page_table_marked_bit) { - // zero page, we can use it as scratch register before it's initialized - code.xor_(page, page); + // zero tmp + code.xor_(tmp, tmp); if (*ctx.conf.page_table_marked_bit >= 30) { - code.bt(tmp, *ctx.conf.page_table_marked_bit); - code.cmovc(tmp, page); + code.bt(page, *ctx.conf.page_table_marked_bit); + code.cmovc(page, tmp); } else { - code.test(tmp, 1ULL << *ctx.conf.page_table_marked_bit); - code.cmovnz(tmp, page); + code.test(page, 1ULL << *ctx.conf.page_table_marked_bit); + code.cmovnz(page, tmp); } } // mask away attributes