mirror of
https://github.com/melonDS-emu/melonDS.git
synced 2025-08-01 10:39:53 -06:00
improve stm timings
need to verify if they apply to all store instructions
This commit is contained in:
15
src/CP15.cpp
15
src/CP15.cpp
@ -934,10 +934,9 @@ bool ARMv5::DataWrite8(u32 addr, u8 val)
|
||||
return false;
|
||||
}
|
||||
|
||||
DataRegion = addr;
|
||||
|
||||
if (addr < ITCMSize)
|
||||
{
|
||||
DataRegion = Mem9_ITCM;
|
||||
DataCycles = 1;
|
||||
*(u8*)&ITCM[addr & (ITCMPhysicalSize - 1)] = val;
|
||||
NDS.JIT.CheckAndInvalidate<0, ARMJIT_Memory::memregion_ITCM>(addr);
|
||||
@ -945,12 +944,14 @@ bool ARMv5::DataWrite8(u32 addr, u8 val)
|
||||
}
|
||||
if ((addr & DTCMMask) == DTCMBase)
|
||||
{
|
||||
DataRegion = Mem9_DTCM;
|
||||
DataCycles = 1;
|
||||
*(u8*)&DTCM[addr & (DTCMPhysicalSize - 1)] = val;
|
||||
return true;
|
||||
}
|
||||
|
||||
BusWrite8(addr, val);
|
||||
DataRegion = NDS.ARM9Regions[addr >> 14];
|
||||
DataCycles = MemTimings[addr >> 12][1];
|
||||
return true;
|
||||
}
|
||||
@ -963,12 +964,11 @@ bool ARMv5::DataWrite16(u32 addr, u16 val)
|
||||
return false;
|
||||
}
|
||||
|
||||
DataRegion = addr;
|
||||
|
||||
addr &= ~1;
|
||||
|
||||
if (addr < ITCMSize)
|
||||
{
|
||||
DataRegion = Mem9_ITCM;
|
||||
DataCycles = 1;
|
||||
*(u16*)&ITCM[addr & (ITCMPhysicalSize - 1)] = val;
|
||||
NDS.JIT.CheckAndInvalidate<0, ARMJIT_Memory::memregion_ITCM>(addr);
|
||||
@ -976,12 +976,14 @@ bool ARMv5::DataWrite16(u32 addr, u16 val)
|
||||
}
|
||||
if ((addr & DTCMMask) == DTCMBase)
|
||||
{
|
||||
DataRegion = Mem9_DTCM;
|
||||
DataCycles = 1;
|
||||
*(u16*)&DTCM[addr & (DTCMPhysicalSize - 1)] = val;
|
||||
return true;
|
||||
}
|
||||
|
||||
BusWrite16(addr, val);
|
||||
DataRegion = NDS.ARM9Regions[addr >> 14];
|
||||
DataCycles = MemTimings[addr >> 12][1];
|
||||
return true;
|
||||
}
|
||||
@ -994,12 +996,11 @@ bool ARMv5::DataWrite32(u32 addr, u32 val)
|
||||
return false;
|
||||
}
|
||||
|
||||
DataRegion = addr;
|
||||
|
||||
addr &= ~3;
|
||||
|
||||
if (addr < ITCMSize)
|
||||
{
|
||||
DataRegion = Mem9_ITCM;
|
||||
DataCycles = 1;
|
||||
*(u32*)&ITCM[addr & (ITCMPhysicalSize - 1)] = val;
|
||||
NDS.JIT.CheckAndInvalidate<0, ARMJIT_Memory::memregion_ITCM>(addr);
|
||||
@ -1007,12 +1008,14 @@ bool ARMv5::DataWrite32(u32 addr, u32 val)
|
||||
}
|
||||
if ((addr & DTCMMask) == DTCMBase)
|
||||
{
|
||||
DataRegion = Mem9_DTCM;
|
||||
DataCycles = 1;
|
||||
*(u32*)&DTCM[addr & (DTCMPhysicalSize - 1)] = val;
|
||||
return true;
|
||||
}
|
||||
|
||||
BusWrite32(addr, val);
|
||||
DataRegion = NDS.ARM9Regions[addr >> 14];
|
||||
DataCycles = MemTimings[addr >> 12][2];
|
||||
return true;
|
||||
}
|
||||
|
Reference in New Issue
Block a user