Bus: Stub out EXP3 and unknown EXP accesses
This commit is contained in:
parent
c3526adb69
commit
f3522b7b70
|
@ -638,6 +638,40 @@ ALWAYS_INLINE static TickCount DoEXP2Access(u32 offset, u32& value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<MemoryAccessType type>
|
||||||
|
ALWAYS_INLINE static TickCount DoEXP3Access(u32 offset, u32& value)
|
||||||
|
{
|
||||||
|
if constexpr (type == MemoryAccessType::Read)
|
||||||
|
{
|
||||||
|
Log_WarningPrintf("EXP3 read: 0x%08X -> 0x%08X", EXP3_BASE | offset);
|
||||||
|
value = UINT32_C(0xFFFFFFFF);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (offset == 0)
|
||||||
|
Log_WarningPrintf("BIOS POST3 status: %02X", value & UINT32_C(0x0F));
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
template<MemoryAccessType type>
|
||||||
|
ALWAYS_INLINE static TickCount DoUnknownEXPAccess(u32 address, u32& value)
|
||||||
|
{
|
||||||
|
if constexpr (type == MemoryAccessType::Read)
|
||||||
|
{
|
||||||
|
Log_ErrorPrintf("Unknown EXP read: 0x%08X", address);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Log_WarningPrintf("Unknown EXP write: 0x%08X <- 0x%08X", address, value);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
template<MemoryAccessType type, MemoryAccessSize size>
|
template<MemoryAccessType type, MemoryAccessSize size>
|
||||||
ALWAYS_INLINE static TickCount DoMemoryControlAccess(u32 offset, u32& value)
|
ALWAYS_INLINE static TickCount DoMemoryControlAccess(u32 offset, u32& value)
|
||||||
{
|
{
|
||||||
|
@ -1289,6 +1323,14 @@ static ALWAYS_INLINE TickCount DoMemoryAccess(VirtualMemoryAddress address, u32&
|
||||||
{
|
{
|
||||||
return DoEXP2Access<type, size>(address & EXP2_MASK, value);
|
return DoEXP2Access<type, size>(address & EXP2_MASK, value);
|
||||||
}
|
}
|
||||||
|
else if (address < EXP3_BASE)
|
||||||
|
{
|
||||||
|
return DoUnknownEXPAccess<type>(address, value);
|
||||||
|
}
|
||||||
|
else if (address < (EXP3_BASE + EXP3_SIZE))
|
||||||
|
{
|
||||||
|
return DoEXP3Access<type>(address & EXP3_MASK, value);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return DoInvalidAccess(type, size, address, value);
|
return DoInvalidAccess(type, size, address, value);
|
||||||
|
|
|
@ -56,6 +56,9 @@ enum : u32
|
||||||
EXP2_BASE = 0x1F802000,
|
EXP2_BASE = 0x1F802000,
|
||||||
EXP2_SIZE = 0x2000,
|
EXP2_SIZE = 0x2000,
|
||||||
EXP2_MASK = EXP2_SIZE - 1,
|
EXP2_MASK = EXP2_SIZE - 1,
|
||||||
|
EXP3_BASE = 0x1FA00000,
|
||||||
|
EXP3_SIZE = 0x1,
|
||||||
|
EXP3_MASK = EXP3_SIZE - 1,
|
||||||
BIOS_BASE = 0x1FC00000,
|
BIOS_BASE = 0x1FC00000,
|
||||||
BIOS_SIZE = 0x80000,
|
BIOS_SIZE = 0x80000,
|
||||||
BIOS_MASK = 0x7FFFF,
|
BIOS_MASK = 0x7FFFF,
|
||||||
|
|
Loading…
Reference in New Issue