mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2026-02-12 09:14:52 +00:00
Core: Don't call InitMMIO from MemoryManager::Init
In the unit test I'm adding in the next commit, I want to call MemoryManager::Init, but initializing all the hardware that MemoryManager::InitMMIO calls into would be cumbersome. Calling MemoryManager::InitMMIO from MemoryManager::Init was a bit strange anyway. Because MemoryManager::Init is called about halfway through HW::Init, some of the hardware that MemoryManager::InitMMIO calls into isn't initialized yet.
This commit is contained in:
parent
b0e2a28e14
commit
94283c9639
@ -57,6 +57,8 @@ void Init(Core::System& system, const Sram* override_sram)
|
||||
system.GetWiiIPC().Init();
|
||||
IOS::HLE::Init(system); // Depends on Memory
|
||||
}
|
||||
|
||||
system.GetMemory().InitMMIO(system);
|
||||
}
|
||||
|
||||
void Shutdown(Core::System& system)
|
||||
|
||||
@ -61,27 +61,27 @@ MemoryManager::HostPageType MemoryManager::GetHostPageTypeForPageSize(u32 page_s
|
||||
return page_size > PowerPC::HW_PAGE_SIZE ? HostPageType::LargePages : HostPageType::SmallPages;
|
||||
}
|
||||
|
||||
void MemoryManager::InitMMIO(bool is_wii)
|
||||
void MemoryManager::InitMMIO(Core::System& system)
|
||||
{
|
||||
m_mmio_mapping = std::make_unique<MMIO::Mapping>();
|
||||
|
||||
m_system.GetCommandProcessor().RegisterMMIO(m_mmio_mapping.get(), 0x0C000000);
|
||||
m_system.GetPixelEngine().RegisterMMIO(m_mmio_mapping.get(), 0x0C001000);
|
||||
m_system.GetVideoInterface().RegisterMMIO(m_mmio_mapping.get(), 0x0C002000);
|
||||
m_system.GetProcessorInterface().RegisterMMIO(m_mmio_mapping.get(), 0x0C003000);
|
||||
m_system.GetMemoryInterface().RegisterMMIO(m_mmio_mapping.get(), 0x0C004000);
|
||||
m_system.GetDSP().RegisterMMIO(m_mmio_mapping.get(), 0x0C005000);
|
||||
m_system.GetDVDInterface().RegisterMMIO(m_mmio_mapping.get(), 0x0C006000, false);
|
||||
m_system.GetSerialInterface().RegisterMMIO(m_mmio_mapping.get(), 0x0C006400);
|
||||
m_system.GetExpansionInterface().RegisterMMIO(m_mmio_mapping.get(), 0x0C006800);
|
||||
m_system.GetAudioInterface().RegisterMMIO(m_mmio_mapping.get(), 0x0C006C00);
|
||||
if (is_wii)
|
||||
system.GetCommandProcessor().RegisterMMIO(m_mmio_mapping.get(), 0x0C000000);
|
||||
system.GetPixelEngine().RegisterMMIO(m_mmio_mapping.get(), 0x0C001000);
|
||||
system.GetVideoInterface().RegisterMMIO(m_mmio_mapping.get(), 0x0C002000);
|
||||
system.GetProcessorInterface().RegisterMMIO(m_mmio_mapping.get(), 0x0C003000);
|
||||
system.GetMemoryInterface().RegisterMMIO(m_mmio_mapping.get(), 0x0C004000);
|
||||
system.GetDSP().RegisterMMIO(m_mmio_mapping.get(), 0x0C005000);
|
||||
system.GetDVDInterface().RegisterMMIO(m_mmio_mapping.get(), 0x0C006000, false);
|
||||
system.GetSerialInterface().RegisterMMIO(m_mmio_mapping.get(), 0x0C006400);
|
||||
system.GetExpansionInterface().RegisterMMIO(m_mmio_mapping.get(), 0x0C006800);
|
||||
system.GetAudioInterface().RegisterMMIO(m_mmio_mapping.get(), 0x0C006C00);
|
||||
if (system.IsWii())
|
||||
{
|
||||
m_system.GetWiiIPC().RegisterMMIO(m_mmio_mapping.get(), 0x0D000000);
|
||||
m_system.GetDVDInterface().RegisterMMIO(m_mmio_mapping.get(), 0x0D006000, true);
|
||||
m_system.GetSerialInterface().RegisterMMIO(m_mmio_mapping.get(), 0x0D006400);
|
||||
m_system.GetExpansionInterface().RegisterMMIO(m_mmio_mapping.get(), 0x0D006800);
|
||||
m_system.GetAudioInterface().RegisterMMIO(m_mmio_mapping.get(), 0x0D006C00);
|
||||
system.GetWiiIPC().RegisterMMIO(m_mmio_mapping.get(), 0x0D000000);
|
||||
system.GetDVDInterface().RegisterMMIO(m_mmio_mapping.get(), 0x0D006000, true);
|
||||
system.GetSerialInterface().RegisterMMIO(m_mmio_mapping.get(), 0x0D006400);
|
||||
system.GetExpansionInterface().RegisterMMIO(m_mmio_mapping.get(), 0x0D006800);
|
||||
system.GetAudioInterface().RegisterMMIO(m_mmio_mapping.get(), 0x0D006C00);
|
||||
}
|
||||
}
|
||||
|
||||
@ -165,8 +165,6 @@ void MemoryManager::Init()
|
||||
m_physical_page_mappings_base = reinterpret_cast<u8*>(m_physical_page_mappings.data());
|
||||
m_logical_page_mappings_base = reinterpret_cast<u8*>(m_logical_page_mappings.data());
|
||||
|
||||
InitMMIO(wii);
|
||||
|
||||
Clear();
|
||||
|
||||
INFO_LOG_FMT(MEMMAP, "Memory system initialized. RAM at {}", fmt::ptr(m_ram));
|
||||
|
||||
@ -95,6 +95,7 @@ public:
|
||||
|
||||
// Init and Shutdown
|
||||
bool IsInitialized() const { return m_is_initialized; }
|
||||
void InitMMIO(Core::System& system);
|
||||
void Init();
|
||||
void Shutdown();
|
||||
bool InitFastmemArena();
|
||||
@ -284,8 +285,6 @@ private:
|
||||
|
||||
static HostPageType GetHostPageTypeForPageSize(u32 page_size);
|
||||
|
||||
void InitMMIO(bool is_wii);
|
||||
|
||||
void TryAddLargePageTableMapping(u32 logical_address, u32 translated_address, bool writeable);
|
||||
bool TryAddLargePageTableMapping(u32 logical_address, u32 translated_address,
|
||||
std::map<u32, std::vector<u32>>& map);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user