|
|
|
@ -14,6 +14,7 @@
|
|
|
|
|
#include "common/swap.h"
|
|
|
|
|
#include "core/arm/arm_interface.h"
|
|
|
|
|
#include "core/core.h"
|
|
|
|
|
#include "core/hle/kernel/physical_memory.h"
|
|
|
|
|
#include "core/hle/kernel/process.h"
|
|
|
|
|
#include "core/hle/kernel/vm_manager.h"
|
|
|
|
|
#include "core/memory.h"
|
|
|
|
@ -38,6 +39,11 @@ struct Memory::Impl {
|
|
|
|
|
system.ArmInterface(3).PageTableChanged(*current_page_table, address_space_width);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void MapMemoryRegion(Common::PageTable& page_table, VAddr base, u64 size,
|
|
|
|
|
Kernel::PhysicalMemory& memory, VAddr offset) {
|
|
|
|
|
MapMemoryRegion(page_table, base, size, memory.data() + offset);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void MapMemoryRegion(Common::PageTable& page_table, VAddr base, u64 size, u8* target) {
|
|
|
|
|
ASSERT_MSG((size & PAGE_MASK) == 0, "non-page aligned size: {:016X}", size);
|
|
|
|
|
ASSERT_MSG((base & PAGE_MASK) == 0, "non-page aligned base: {:016X}", base);
|
|
|
|
@ -601,6 +607,11 @@ void Memory::SetCurrentPageTable(Kernel::Process& process) {
|
|
|
|
|
impl->SetCurrentPageTable(process);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Memory::MapMemoryRegion(Common::PageTable& page_table, VAddr base, u64 size,
|
|
|
|
|
Kernel::PhysicalMemory& memory, VAddr offset) {
|
|
|
|
|
impl->MapMemoryRegion(page_table, base, size, memory, offset);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Memory::MapMemoryRegion(Common::PageTable& page_table, VAddr base, u64 size, u8* target) {
|
|
|
|
|
impl->MapMemoryRegion(page_table, base, size, target);
|
|
|
|
|
}
|
|
|
|
|