From 744f5c9fcdd3339889abbbd0b81e15f2de464153 Mon Sep 17 00:00:00 2001 From: Jaklyy <102590697+Jaklyy@users.noreply.github.com> Date: Sat, 19 Oct 2024 16:51:40 -0400 Subject: [PATCH] small fixes --- src/ARM.cpp | 4 ++-- src/CP15.cpp | 10 +++++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/ARM.cpp b/src/ARM.cpp index 64d697a8..b3d3e9aa 100644 --- a/src/ARM.cpp +++ b/src/ARM.cpp @@ -1160,6 +1160,7 @@ void ARMv5::CodeFetch() NextInstr[1] >>= 16; NDS.ARM9Timestamp++; if (NDS.ARM9Timestamp < TimestampActual) NDS.ARM9Timestamp = TimestampActual; + Store = false; DataRegion = Mem9_Null; } else NextInstr[1] = CodeRead32(PC, false); @@ -1218,8 +1219,7 @@ void ARMv5::HandleInterlocksMemory(u8 reg) u64 diff = ILPrevTime - NDS.ARM9Timestamp; // should always be 1? NDS.ARM9Timestamp = ILPrevTime; - MainRAMTimestamp += diff; - ITCMTimestamp += diff; + ITCMTimestamp += diff; // checkme ILPrevTime = 16; } diff --git a/src/CP15.cpp b/src/CP15.cpp index bdee27a6..9603692e 100644 --- a/src/CP15.cpp +++ b/src/CP15.cpp @@ -413,6 +413,7 @@ u32 ARMv5::ICacheLookup(const u32 addr) NDS.ARM9Timestamp += 1; if (NDS.ARM9Timestamp < TimestampActual) NDS.ARM9Timestamp = TimestampActual; DataRegion = Mem9_Null; + Store = false; return cacheLine[(addr & (ICACHE_LINELENGTH -1)) >> 2]; } } @@ -489,11 +490,12 @@ u32 ARMv5::ICacheLookup(const u32 addr) if (NDS.ARM9Timestamp < MainRAMTimestamp) NDS.ARM9Timestamp = MainRAMTimestamp + ((1<>14] == DataRegion && Store) NDS.ARM9Timestamp += (1<> 14][2] + (NDS.ARM9MemTimings[tag >> 14][3] * ((DCACHE_LINELENGTH / 4) - 1)) - 1) << NDS.ARM9ClockShift) + 1; + NDS.ARM9Timestamp += CodeCycles; + if (NDS.ARM9Timestamp < TimestampActual) NDS.ARM9Timestamp = TimestampActual; + DataRegion = Mem9_Null; return ptr[(addr & (ICACHE_LINELENGTH-1)) >> 2]; } @@ -1863,6 +1865,7 @@ u32 ARMv5::CodeRead32(u32 addr, bool branch) NDS.ARM9Timestamp += CodeCycles; if (NDS.ARM9Timestamp < TimestampActual) NDS.ARM9Timestamp = TimestampActual; DataRegion = Mem9_Null; + Store = false; return 0; } @@ -1874,6 +1877,7 @@ u32 ARMv5::CodeRead32(u32 addr, bool branch) NDS.ARM9Timestamp += CodeCycles; if (NDS.ARM9Timestamp < TimestampActual) NDS.ARM9Timestamp = TimestampActual; DataRegion = Mem9_Null; + Store = false; return *(u32*)&ITCM[addr & (ITCMPhysicalSize - 1)]; }