diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/ARM.cpp | 1 | ||||
-rw-r--r-- | src/CP15.cpp | 2 | ||||
-rw-r--r-- | src/NDS.cpp | 9 |
3 files changed, 10 insertions, 2 deletions
diff --git a/src/ARM.cpp b/src/ARM.cpp index b68b5eb..868c287 100644 --- a/src/ARM.cpp +++ b/src/ARM.cpp @@ -102,7 +102,6 @@ void ARM::Reset() void ARMv5::Reset() { - CP15Reset(); ARM::Reset(); } diff --git a/src/CP15.cpp b/src/CP15.cpp index e6e91c3..b24c1c1 100644 --- a/src/CP15.cpp +++ b/src/CP15.cpp @@ -257,9 +257,11 @@ void ARMv5::UpdatePURegions(bool update_all) void ARMv5::UpdateRegionTimings(u32 addrstart, u32 addrend) { + printf("initialising region timings %x %x\n", addrstart, addrend); addrstart >>= 12; addrend >>= 12; + if (addrend == 0xFFFFF) addrend++; for (u32 i = addrstart; i < addrend; i++) diff --git a/src/NDS.cpp b/src/NDS.cpp index cab78b5..1baa308 100644 --- a/src/NDS.cpp +++ b/src/NDS.cpp @@ -247,7 +247,9 @@ void SetARM9RegionTimings(u32 addrstart, u32 addrend, int buswidth, int nonseq, ARM9MemTimings[i][3] = S32; } - ARM9->UpdateRegionTimings(addrstart<<14, addrend<<14); + ARM9->UpdateRegionTimings(addrstart<<14, addrend == 0x40000 + ? 0xFFFFFFFF + : (addrend<<14)); } void SetARM7RegionTimings(u32 addrstart, u32 addrend, int buswidth, int nonseq, int seq) @@ -459,6 +461,11 @@ void Reset() fclose(f); } + // has to be called before InitTimings + // otherwise some PU settings are completely + // unitialised on the first run + ARM9->CP15Reset(); + // TODO for later: configure this when emulating a DSi ARM9ClockShift = 1; |