jit
This commit is contained in:
parent
9cf065e54f
commit
35c382acab
26
src/CP15.cpp
26
src/CP15.cpp
|
@ -453,7 +453,9 @@ void ARMv5::WriteBufferCheck()
|
||||||
if (WBAddr < ITCMSize)
|
if (WBAddr < ITCMSize)
|
||||||
{
|
{
|
||||||
*(u8*)&ITCM[WBAddr & (ITCMPhysicalSize - 1)] = val;
|
*(u8*)&ITCM[WBAddr & (ITCMPhysicalSize - 1)] = val;
|
||||||
|
#ifdef JIT_ENABLED
|
||||||
NDS.JIT.CheckAndInvalidate<0, ARMJIT_Memory::memregion_ITCM>(WBAddr);
|
NDS.JIT.CheckAndInvalidate<0, ARMJIT_Memory::memregion_ITCM>(WBAddr);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
else if ((WBAddr & DTCMMask) == DTCMBase) *(u8*)&DTCM[WBAddr & (DTCMPhysicalSize - 1)] = val;
|
else if ((WBAddr & DTCMMask) == DTCMBase) *(u8*)&DTCM[WBAddr & (DTCMPhysicalSize - 1)] = val;
|
||||||
else BusWrite8(storeaddr[WBWritePointer], val);
|
else BusWrite8(storeaddr[WBWritePointer], val);
|
||||||
|
@ -465,7 +467,9 @@ void ARMv5::WriteBufferCheck()
|
||||||
if (WBAddr < ITCMSize)
|
if (WBAddr < ITCMSize)
|
||||||
{
|
{
|
||||||
*(u16*)&ITCM[WBAddr & (ITCMPhysicalSize - 2)] = val;
|
*(u16*)&ITCM[WBAddr & (ITCMPhysicalSize - 2)] = val;
|
||||||
|
#ifdef JIT_ENABLED
|
||||||
NDS.JIT.CheckAndInvalidate<0, ARMJIT_Memory::memregion_ITCM>(WBAddr);
|
NDS.JIT.CheckAndInvalidate<0, ARMJIT_Memory::memregion_ITCM>(WBAddr);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
else if ((WBAddr & DTCMMask) == DTCMBase) *(u16*)&DTCM[WBAddr & (DTCMPhysicalSize - 2)] = val;
|
else if ((WBAddr & DTCMMask) == DTCMBase) *(u16*)&DTCM[WBAddr & (DTCMPhysicalSize - 2)] = val;
|
||||||
else BusWrite16(storeaddr[WBWritePointer], val);
|
else BusWrite16(storeaddr[WBWritePointer], val);
|
||||||
|
@ -477,7 +481,9 @@ void ARMv5::WriteBufferCheck()
|
||||||
if (WBAddr < ITCMSize)
|
if (WBAddr < ITCMSize)
|
||||||
{
|
{
|
||||||
*(u32*)&ITCM[WBAddr & (ITCMPhysicalSize - 4)] = val;
|
*(u32*)&ITCM[WBAddr & (ITCMPhysicalSize - 4)] = val;
|
||||||
|
#ifdef JIT_ENABLED
|
||||||
NDS.JIT.CheckAndInvalidate<0, ARMJIT_Memory::memregion_ITCM>(WBAddr);
|
NDS.JIT.CheckAndInvalidate<0, ARMJIT_Memory::memregion_ITCM>(WBAddr);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
else if ((WBAddr & DTCMMask) == DTCMBase) *(u32*)&DTCM[WBAddr & (DTCMPhysicalSize - 4)] = val;
|
else if ((WBAddr & DTCMMask) == DTCMBase) *(u32*)&DTCM[WBAddr & (DTCMPhysicalSize - 4)] = val;
|
||||||
else BusWrite32(storeaddr[WBWritePointer], val);
|
else BusWrite32(storeaddr[WBWritePointer], val);
|
||||||
|
@ -520,7 +526,9 @@ void ARMv5::WriteBufferWrite(u32 val, u8 flag, u8 cycles, u32 addr)
|
||||||
if (WBAddr < ITCMSize)
|
if (WBAddr < ITCMSize)
|
||||||
{
|
{
|
||||||
*(u8*)&ITCM[WBAddr & (ITCMPhysicalSize - 1)] = val;
|
*(u8*)&ITCM[WBAddr & (ITCMPhysicalSize - 1)] = val;
|
||||||
|
#ifdef JIT_ENABLED
|
||||||
NDS.JIT.CheckAndInvalidate<0, ARMJIT_Memory::memregion_ITCM>(WBAddr);
|
NDS.JIT.CheckAndInvalidate<0, ARMJIT_Memory::memregion_ITCM>(WBAddr);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
else if ((WBAddr & DTCMMask) == DTCMBase) *(u8*)&DTCM[WBAddr & (DTCMPhysicalSize - 1)] = val;
|
else if ((WBAddr & DTCMMask) == DTCMBase) *(u8*)&DTCM[WBAddr & (DTCMPhysicalSize - 1)] = val;
|
||||||
else BusWrite8(storeaddr[WBWritePointer], val);
|
else BusWrite8(storeaddr[WBWritePointer], val);
|
||||||
|
@ -532,7 +540,9 @@ void ARMv5::WriteBufferWrite(u32 val, u8 flag, u8 cycles, u32 addr)
|
||||||
if (WBAddr < ITCMSize)
|
if (WBAddr < ITCMSize)
|
||||||
{
|
{
|
||||||
*(u16*)&ITCM[WBAddr & (ITCMPhysicalSize - 2)] = val;
|
*(u16*)&ITCM[WBAddr & (ITCMPhysicalSize - 2)] = val;
|
||||||
|
#ifdef JIT_ENABLED
|
||||||
NDS.JIT.CheckAndInvalidate<0, ARMJIT_Memory::memregion_ITCM>(WBAddr);
|
NDS.JIT.CheckAndInvalidate<0, ARMJIT_Memory::memregion_ITCM>(WBAddr);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
else if ((WBAddr & DTCMMask) == DTCMBase) *(u16*)&DTCM[WBAddr & (DTCMPhysicalSize - 2)] = val;
|
else if ((WBAddr & DTCMMask) == DTCMBase) *(u16*)&DTCM[WBAddr & (DTCMPhysicalSize - 2)] = val;
|
||||||
else BusWrite16(storeaddr[WBWritePointer], val);
|
else BusWrite16(storeaddr[WBWritePointer], val);
|
||||||
|
@ -544,7 +554,9 @@ void ARMv5::WriteBufferWrite(u32 val, u8 flag, u8 cycles, u32 addr)
|
||||||
if (WBAddr < ITCMSize)
|
if (WBAddr < ITCMSize)
|
||||||
{
|
{
|
||||||
*(u32*)&ITCM[WBAddr & (ITCMPhysicalSize - 4)] = val;
|
*(u32*)&ITCM[WBAddr & (ITCMPhysicalSize - 4)] = val;
|
||||||
|
#ifdef JIT_ENABLED
|
||||||
NDS.JIT.CheckAndInvalidate<0, ARMJIT_Memory::memregion_ITCM>(WBAddr);
|
NDS.JIT.CheckAndInvalidate<0, ARMJIT_Memory::memregion_ITCM>(WBAddr);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
else if ((WBAddr & DTCMMask) == DTCMBase) *(u32*)&DTCM[WBAddr & (DTCMPhysicalSize - 4)] = val;
|
else if ((WBAddr & DTCMMask) == DTCMBase) *(u32*)&DTCM[WBAddr & (DTCMPhysicalSize - 4)] = val;
|
||||||
else BusWrite32(storeaddr[WBWritePointer], val);
|
else BusWrite32(storeaddr[WBWritePointer], val);
|
||||||
|
@ -600,7 +612,9 @@ void ARMv5::WriteBufferDrain()
|
||||||
if (WBAddr < ITCMSize)
|
if (WBAddr < ITCMSize)
|
||||||
{
|
{
|
||||||
*(u8*)&ITCM[WBAddr & (ITCMPhysicalSize - 1)] = val;
|
*(u8*)&ITCM[WBAddr & (ITCMPhysicalSize - 1)] = val;
|
||||||
|
#ifdef JIT_ENABLED
|
||||||
NDS.JIT.CheckAndInvalidate<0, ARMJIT_Memory::memregion_ITCM>(WBAddr);
|
NDS.JIT.CheckAndInvalidate<0, ARMJIT_Memory::memregion_ITCM>(WBAddr);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
else if ((WBAddr & DTCMMask) == DTCMBase) *(u8*)&DTCM[WBAddr & (DTCMPhysicalSize - 1)] = val;
|
else if ((WBAddr & DTCMMask) == DTCMBase) *(u8*)&DTCM[WBAddr & (DTCMPhysicalSize - 1)] = val;
|
||||||
else BusWrite8(storeaddr[WBWritePointer], val);
|
else BusWrite8(storeaddr[WBWritePointer], val);
|
||||||
|
@ -612,7 +626,9 @@ void ARMv5::WriteBufferDrain()
|
||||||
if (WBAddr < ITCMSize)
|
if (WBAddr < ITCMSize)
|
||||||
{
|
{
|
||||||
*(u16*)&ITCM[WBAddr & (ITCMPhysicalSize - 2)] = val;
|
*(u16*)&ITCM[WBAddr & (ITCMPhysicalSize - 2)] = val;
|
||||||
|
#ifdef JIT_ENABLED
|
||||||
NDS.JIT.CheckAndInvalidate<0, ARMJIT_Memory::memregion_ITCM>(WBAddr);
|
NDS.JIT.CheckAndInvalidate<0, ARMJIT_Memory::memregion_ITCM>(WBAddr);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
else if ((WBAddr & DTCMMask) == DTCMBase) *(u16*)&DTCM[WBAddr & (DTCMPhysicalSize - 2)] = val;
|
else if ((WBAddr & DTCMMask) == DTCMBase) *(u16*)&DTCM[WBAddr & (DTCMPhysicalSize - 2)] = val;
|
||||||
else BusWrite16(storeaddr[WBWritePointer], val);
|
else BusWrite16(storeaddr[WBWritePointer], val);
|
||||||
|
@ -624,7 +640,9 @@ void ARMv5::WriteBufferDrain()
|
||||||
if (WBAddr < ITCMSize)
|
if (WBAddr < ITCMSize)
|
||||||
{
|
{
|
||||||
*(u32*)&ITCM[WBAddr & (ITCMPhysicalSize - 4)] = val;
|
*(u32*)&ITCM[WBAddr & (ITCMPhysicalSize - 4)] = val;
|
||||||
|
#ifdef JIT_ENABLED
|
||||||
NDS.JIT.CheckAndInvalidate<0, ARMJIT_Memory::memregion_ITCM>(WBAddr);
|
NDS.JIT.CheckAndInvalidate<0, ARMJIT_Memory::memregion_ITCM>(WBAddr);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
else if ((WBAddr & DTCMMask) == DTCMBase) *(u32*)&DTCM[WBAddr & (DTCMPhysicalSize - 4)] = val;
|
else if ((WBAddr & DTCMMask) == DTCMBase) *(u32*)&DTCM[WBAddr & (DTCMPhysicalSize - 4)] = val;
|
||||||
else BusWrite32(storeaddr[WBWritePointer], val);
|
else BusWrite32(storeaddr[WBWritePointer], val);
|
||||||
|
@ -1096,7 +1114,7 @@ bool ARMv5::DataRead16(u32 addr, u32* val)
|
||||||
}
|
}
|
||||||
|
|
||||||
addr &= ~1;
|
addr &= ~1;
|
||||||
if ((PU_Map[addr>>CP15_MAP_ENTRYSIZE_LOG2] & (CP15_MAP_DCACHEWRITEBACK | CP15_MAP_DCACHEABLE)))
|
if ((PU_Map[addr>>12] & 0x30))
|
||||||
WriteBufferDrain();
|
WriteBufferDrain();
|
||||||
|
|
||||||
if (addr < ITCMSize)
|
if (addr < ITCMSize)
|
||||||
|
@ -1249,7 +1267,9 @@ bool ARMv5::DataWrite8(u32 addr, u8 val)
|
||||||
ITCMTimestamp = NDS.ARM9Timestamp + DataCycles;
|
ITCMTimestamp = NDS.ARM9Timestamp + DataCycles;
|
||||||
DataRegion = Mem9_ITCM;
|
DataRegion = Mem9_ITCM;
|
||||||
*(u8*)&ITCM[addr & (ITCMPhysicalSize - 1)] = val;
|
*(u8*)&ITCM[addr & (ITCMPhysicalSize - 1)] = val;
|
||||||
|
#ifdef JIT_ENABLED
|
||||||
NDS.JIT.CheckAndInvalidate<0, ARMJIT_Memory::memregion_ITCM>(addr);
|
NDS.JIT.CheckAndInvalidate<0, ARMJIT_Memory::memregion_ITCM>(addr);
|
||||||
|
#endif
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if ((addr & DTCMMask) == DTCMBase)
|
if ((addr & DTCMMask) == DTCMBase)
|
||||||
|
@ -1306,7 +1326,9 @@ bool ARMv5::DataWrite16(u32 addr, u16 val)
|
||||||
ITCMTimestamp = NDS.ARM9Timestamp + DataCycles;
|
ITCMTimestamp = NDS.ARM9Timestamp + DataCycles;
|
||||||
DataRegion = Mem9_ITCM;
|
DataRegion = Mem9_ITCM;
|
||||||
*(u16*)&ITCM[addr & (ITCMPhysicalSize - 1)] = val;
|
*(u16*)&ITCM[addr & (ITCMPhysicalSize - 1)] = val;
|
||||||
|
#ifdef JIT_ENABLED
|
||||||
NDS.JIT.CheckAndInvalidate<0, ARMJIT_Memory::memregion_ITCM>(addr);
|
NDS.JIT.CheckAndInvalidate<0, ARMJIT_Memory::memregion_ITCM>(addr);
|
||||||
|
#endif
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if ((addr & DTCMMask) == DTCMBase)
|
if ((addr & DTCMMask) == DTCMBase)
|
||||||
|
@ -1363,7 +1385,9 @@ bool ARMv5::DataWrite32(u32 addr, u32 val)
|
||||||
ITCMTimestamp = NDS.ARM9Timestamp + DataCycles;
|
ITCMTimestamp = NDS.ARM9Timestamp + DataCycles;
|
||||||
DataRegion = Mem9_ITCM;
|
DataRegion = Mem9_ITCM;
|
||||||
*(u32*)&ITCM[addr & (ITCMPhysicalSize - 1)] = val;
|
*(u32*)&ITCM[addr & (ITCMPhysicalSize - 1)] = val;
|
||||||
|
#ifdef JIT_ENABLED
|
||||||
NDS.JIT.CheckAndInvalidate<0, ARMJIT_Memory::memregion_ITCM>(addr);
|
NDS.JIT.CheckAndInvalidate<0, ARMJIT_Memory::memregion_ITCM>(addr);
|
||||||
|
#endif
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if ((addr & DTCMMask) == DTCMBase)
|
if ((addr & DTCMMask) == DTCMBase)
|
||||||
|
|
Loading…
Reference in New Issue