Replaced more CP15 magic values with named constants

This commit is contained in:
DesperateProgrammer 2024-01-19 10:24:02 +01:00
parent 434c234098
commit d9fcc2ec2c
2 changed files with 16 additions and 11 deletions

View File

@ -114,7 +114,7 @@ void ARMv5::UpdateDTCMSetting()
u32 newDTCMMask; u32 newDTCMMask;
u32 newDTCMSize; u32 newDTCMSize;
if (CP15Control & (1<<16)) if (CP15Control & CP15_TCM_CR_DTCM_ENABLE)
{ {
newDTCMSize = 0x200 << ((DTCMSetting >> 1) & 0x1F); newDTCMSize = 0x200 << ((DTCMSetting >> 1) & 0x1F);
if (newDTCMSize < 0x1000) newDTCMSize = 0x1000; if (newDTCMSize < 0x1000) newDTCMSize = 0x1000;
@ -138,7 +138,7 @@ void ARMv5::UpdateDTCMSetting()
void ARMv5::UpdateITCMSetting() void ARMv5::UpdateITCMSetting()
{ {
if (CP15Control & (1<<18)) if (CP15Control & CP15_TCM_CR_ITCM_ENABLE)
{ {
ITCMSize = 0x200 << ((ITCMSetting >> 1) & 0x1F); ITCMSize = 0x200 << ((ITCMSetting >> 1) & 0x1F);
#ifdef JIT_ENABLED #ifdef JIT_ENABLED
@ -156,7 +156,7 @@ void ARMv5::UpdateITCMSetting()
// (not to the region range/enabled status) // (not to the region range/enabled status)
void ARMv5::UpdatePURegion(u32 n) void ARMv5::UpdatePURegion(u32 n)
{ {
if (!(CP15Control & (1<<0))) if (!(CP15Control & CP15_CR_MPUENABLE))
return; return;
u32 coderw = (PU_CodeRW >> (4*n)) & 0xF; u32 coderw = (PU_CodeRW >> (4*n)) & 0xF;
@ -170,12 +170,12 @@ void ARMv5::UpdatePURegion(u32 n)
// 1/0: goes to memory and cache // 1/0: goes to memory and cache
// 1/1: goes to cache // 1/1: goes to cache
if (CP15Control & (1<<12)) if (CP15Control & CP15_CACHE_CR_ICACHEENABLE)
codecache = (PU_CodeCacheable >> n) & 0x1; codecache = (PU_CodeCacheable >> n) & 0x1;
else else
codecache = 0; codecache = 0;
if (CP15Control & (1<<2)) if (CP15Control & CP15_CACHE_CR_DCACHEENABLE)
{ {
datacache = (PU_DataCacheable >> n) & 0x1; datacache = (PU_DataCacheable >> n) & 0x1;
datawrite = (PU_DataCacheWrite >> n) & 0x1; datawrite = (PU_DataCacheWrite >> n) & 0x1;
@ -263,13 +263,13 @@ void ARMv5::UpdatePURegion(u32 n)
void ARMv5::UpdatePURegions(bool update_all) void ARMv5::UpdatePURegions(bool update_all)
{ {
if (!(CP15Control & (1<<0))) if (!(CP15Control & CP15_CR_MPUENABLE))
{ {
// PU disabled // PU disabled
u8 mask = 0x07; u8 mask = 0x07;
if (CP15Control & (1<<2)) mask |= 0x30; if (CP15Control & CP15_CACHE_CR_DCACHEENABLE) mask |= 0x30;
if (CP15Control & (1<<12)) mask |= 0x40; if (CP15Control & CP15_CACHE_CR_ICACHEENABLE) mask |= 0x40;
memset(PU_UserMap, mask, 0x100000); memset(PU_UserMap, mask, 0x100000);
memset(PU_PrivMap, mask, 0x100000); memset(PU_PrivMap, mask, 0x100000);
@ -442,9 +442,9 @@ void ARMv5::CP15Write(u32 id, u32 val)
{ {
UpdatePURegions((old & 0x1) != (val & 0x1)); UpdatePURegions((old & 0x1) != (val & 0x1));
} }
if (val & (1<<7)) Log(LogLevel::Warn, "!!!! ARM9 BIG ENDIAN MODE. VERY BAD. SHIT GONNA ASPLODE NOW\n"); if (val & CP15_CR_BIGENDIAN) Log(LogLevel::Warn, "!!!! ARM9 BIG ENDIAN MODE. VERY BAD. SHIT GONNA ASPLODE NOW\n");
if (val & (1<<13)) ExceptionBase = 0xFFFF0000; if (val & CP15_CR_HIGHEXCEPTIONBASE) ExceptionBase = 0xFFFF0000;
else ExceptionBase = 0x00000000; else ExceptionBase = 0x00000000;
} }
return; return;

View File

@ -45,10 +45,15 @@ constexpr u32 ICACHE_LINELENGTH = 8 * (1 << ICACHE_LINELENGTH_ENCODED);
constexpr u32 ICACHE_LINESPERSET = ICACHE_SIZE / (ICACHE_SETS * ICACHE_LINELENGTH); constexpr u32 ICACHE_LINESPERSET = ICACHE_SIZE / (ICACHE_SETS * ICACHE_LINELENGTH);
constexpr u32 CP15_CR_MPUENABLE = (1 << 0); constexpr u32 CP15_CR_MPUENABLE = (1 << 0);
constexpr u32 CP15_CR_BIGENDIAN = (1 << 7);
constexpr u32 CP15_CR_HIGHEXCEPTIONBASE = (1 << 13);
constexpr u32 CP15_CACHE_CR_ROUNDROBIN = (1 << 14); constexpr u32 CP15_CACHE_CR_ROUNDROBIN = (1 << 14);
constexpr u32 CP15_CACHE_CR_ICACHEENABLE = (1 << 12); constexpr u32 CP15_CACHE_CR_ICACHEENABLE = (1 << 12);
constexpr u32 CP15_CACHE_CR_DCACHEENABLE = (1 << 2); constexpr u32 CP15_CACHE_CR_DCACHEENABLE = (1 << 2);
constexpr u32 CP15_CACHE_CR_WRITEBUFFERENABLE = (1 << 3); constexpr u32 CP15_CACHE_CR_WRITEBUFFERENABLE = (1 << 3);
constexpr u32 CP15_TCM_CR_DTCM_ENABLE = (1 << 16);
constexpr u32 CP15_TCM_CR_ITCM_ENABLE = (1 << 18);
} }
#endif // MELONDS_MEMCONSTANTS_H #endif // MELONDS_MEMCONSTANTS_H