From 316b95bb3f78e98c5c9cd1c9799dc8d6e18ac46f Mon Sep 17 00:00:00 2001 From: Merry Date: Sun, 6 Mar 2022 12:10:16 +0000 Subject: [PATCH] {a32,a64}_emit_x64_memory: Zero extension paranoia --- src/dynarmic/backend/x64/a32_emit_x64_memory.cpp | 3 +++ src/dynarmic/backend/x64/a64_emit_x64_memory.cpp | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/dynarmic/backend/x64/a32_emit_x64_memory.cpp b/src/dynarmic/backend/x64/a32_emit_x64_memory.cpp index 33f1ddfc..82e9ae96 100644 --- a/src/dynarmic/backend/x64/a32_emit_x64_memory.cpp +++ b/src/dynarmic/backend/x64/a32_emit_x64_memory.cpp @@ -85,6 +85,7 @@ void A32EmitX64::GenFastmemFallbacks() { code.mov(code.ABI_PARAM2, Xbyak::Reg64{vaddr_idx}); } } + code.ZeroExtendFrom(bitsize, code.ABI_PARAM3); callback.EmitCall(code); ABI_PopCallerSaveRegistersAndAdjustStack(code); code.ret(); @@ -110,7 +111,9 @@ void A32EmitX64::GenFastmemFallbacks() { code.mov(code.ABI_PARAM2, Xbyak::Reg64{vaddr_idx}); } } + code.ZeroExtendFrom(bitsize, code.ABI_PARAM3); code.mov(code.ABI_PARAM4, rax); + code.ZeroExtendFrom(bitsize, code.ABI_PARAM4); callback.EmitCall(code); ABI_PopCallerSaveRegistersAndAdjustStackExcept(code, HostLoc::RAX); code.ret(); diff --git a/src/dynarmic/backend/x64/a64_emit_x64_memory.cpp b/src/dynarmic/backend/x64/a64_emit_x64_memory.cpp index 2c0e50a5..14cb665e 100644 --- a/src/dynarmic/backend/x64/a64_emit_x64_memory.cpp +++ b/src/dynarmic/backend/x64/a64_emit_x64_memory.cpp @@ -227,6 +227,7 @@ void A64EmitX64::GenFastmemFallbacks() { code.mov(code.ABI_PARAM2, Xbyak::Reg64{vaddr_idx}); } } + code.ZeroExtendFrom(bitsize, code.ABI_PARAM3); callback.EmitCall(code); ABI_PopCallerSaveRegistersAndAdjustStack(code); code.ret(); @@ -252,7 +253,9 @@ void A64EmitX64::GenFastmemFallbacks() { code.mov(code.ABI_PARAM2, Xbyak::Reg64{vaddr_idx}); } } + code.ZeroExtendFrom(bitsize, code.ABI_PARAM3); code.mov(code.ABI_PARAM4, rax); + code.ZeroExtendFrom(bitsize, code.ABI_PARAM4); callback.EmitCall(code); ABI_PopCallerSaveRegistersAndAdjustStackExcept(code, HostLoc::RAX); code.ret();