Merge pull request #2624 from CookiePLMonster/fix-safe-unaligned-writes

Make DoSafeMemoryAccess return true properly for RAM, BIOS, dcache writes
This commit is contained in:
Connor McLaughlin 2021-09-26 09:57:26 +10:00 committed by GitHub
commit 8864b48c02
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 13 additions and 8 deletions

View File

@ -1914,7 +1914,10 @@ static ALWAYS_INLINE bool DoSafeMemoryAccess(VirtualMemoryAddress address, u32&
{
address &= PHYSICAL_MEMORY_ADDRESS_MASK;
if ((address & DCACHE_LOCATION_MASK) == DCACHE_LOCATION)
return DoScratchpadAccess<type, size>(address, value);
{
DoScratchpadAccess<type, size>(address, value);
return true;
}
}
break;
@ -1937,16 +1940,18 @@ static ALWAYS_INLINE bool DoSafeMemoryAccess(VirtualMemoryAddress address, u32&
if (address < RAM_MIRROR_END)
{
return DoRAMAccess<type, size, true>(address, value);
DoRAMAccess<type, size, true>(address, value);
return true;
}
else if (address >= BIOS_BASE && address < (BIOS_BASE + BIOS_SIZE))
if constexpr (type == MemoryAccessType::Read)
{
return DoBIOSAccess<type, size>(static_cast<u32>(address - BIOS_BASE), value);
}
else
{
return false;
if (address >= BIOS_BASE && address < (BIOS_BASE + BIOS_SIZE))
{
DoBIOSAccess<type, size>(static_cast<u32>(address - BIOS_BASE), value);
return true;
}
}
return false;
}
bool SafeReadMemoryByte(VirtualMemoryAddress addr, u8* value)