From 8a90e94e74ec8563c78ba09620afe1cca7e3734f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Wed, 20 Sep 2023 19:11:28 +0200 Subject: [PATCH] Add an assert to try to track down a mysterious reported crash. --- Core/MIPS/ARM/ArmJit.cpp | 4 +++- Core/MIPS/ARM64/Arm64Jit.cpp | 6 +++--- Core/MIPS/x86/Jit.cpp | 4 +++- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/Core/MIPS/ARM/ArmJit.cpp b/Core/MIPS/ARM/ArmJit.cpp index cb4a505e8d..c0ae1071a5 100644 --- a/Core/MIPS/ARM/ArmJit.cpp +++ b/Core/MIPS/ARM/ArmJit.cpp @@ -255,6 +255,7 @@ void ArmJit::Compile(u32 em_address) { int block_num = blocks.AllocateBlock(em_address); JitBlock *b = blocks.GetBlock(block_num); DoJit(em_address, b); + _assert_msg_(b->originalAddress == em_address, "original %08x != em_address %08x (block %d)", b->originalAddress, em_address, b->blockNum); blocks.FinalizeBlock(block_num, jo.enableBlocklink); EndWrite(); @@ -301,7 +302,8 @@ MIPSOpcode ArmJit::GetOffsetInstruction(int offset) { const u8 *ArmJit::DoJit(u32 em_address, JitBlock *b) { js.cancel = false; - js.blockStart = js.compilerPC = mips_->pc; + js.blockStart = em_address; + js.compilerPC = em_address; js.lastContinuedPC = 0; js.initialBlockSize = 0; js.nextExit = 0; diff --git a/Core/MIPS/ARM64/Arm64Jit.cpp b/Core/MIPS/ARM64/Arm64Jit.cpp index 1b5c4aca69..d1f1062f1e 100644 --- a/Core/MIPS/ARM64/Arm64Jit.cpp +++ b/Core/MIPS/ARM64/Arm64Jit.cpp @@ -253,8 +253,8 @@ void Arm64Jit::Compile(u32 em_address) { int block_num = blocks.AllocateBlock(em_address); JitBlock *b = blocks.GetBlock(block_num); DoJit(em_address, b); + _assert_msg_(b->originalAddress == em_address, "original %08x != em_address %08x (block %d)", b->originalAddress, em_address, b->blockNum); blocks.FinalizeBlock(block_num, jo.enableBlocklink); - EndWrite(); // Don't forget to zap the newly written instructions in the instruction cache! @@ -302,8 +302,8 @@ MIPSOpcode Arm64Jit::GetOffsetInstruction(int offset) { const u8 *Arm64Jit::DoJit(u32 em_address, JitBlock *b) { js.cancel = false; - js.blockStart = mips_->pc; - js.compilerPC = mips_->pc; + js.blockStart = em_address; + js.compilerPC = em_address; js.lastContinuedPC = 0; js.initialBlockSize = 0; js.nextExit = 0; diff --git a/Core/MIPS/x86/Jit.cpp b/Core/MIPS/x86/Jit.cpp index dab0032b65..c7e2e2fed8 100644 --- a/Core/MIPS/x86/Jit.cpp +++ b/Core/MIPS/x86/Jit.cpp @@ -315,6 +315,7 @@ void Jit::Compile(u32 em_address) { int block_num = blocks.AllocateBlock(em_address); JitBlock *b = blocks.GetBlock(block_num); DoJit(em_address, b); + _assert_msg_(b->originalAddress == em_address, "original %08x != em_address %08x (block %d)", b->originalAddress, em_address, b->blockNum); blocks.FinalizeBlock(block_num, jo.enableBlocklink); EndWrite(); @@ -360,7 +361,8 @@ MIPSOpcode Jit::GetOffsetInstruction(int offset) { const u8 *Jit::DoJit(u32 em_address, JitBlock *b) { js.cancel = false; - js.blockStart = js.compilerPC = mips_->pc; + js.blockStart = em_address; + js.compilerPC = em_address; js.lastContinuedPC = 0; js.initialBlockSize = 0; js.nextExit = 0;