mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-11-04 07:38:47 +00:00 
			
		
		
		
	Memory: move memory setup into MemorySystem
This commit is contained in:
		
							parent
							
								
									e7a3c296c3
								
							
						
					
					
						commit
						643b7d4dcb
					
				
					 11 changed files with 46 additions and 56 deletions
				
			
		| 
						 | 
				
			
			@ -19,7 +19,6 @@
 | 
			
		|||
#include "core/hle/kernel/vm_manager.h"
 | 
			
		||||
#include "core/hle/result.h"
 | 
			
		||||
#include "core/memory.h"
 | 
			
		||||
#include "core/memory_setup.h"
 | 
			
		||||
 | 
			
		||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -402,7 +402,7 @@ ResultCode Process::Unmap(VAddr target, VAddr source, u32 size, VMAPermission pe
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
Kernel::Process::Process(KernelSystem& kernel)
 | 
			
		||||
    : Object(kernel), handle_table(kernel), kernel(kernel) {}
 | 
			
		||||
    : Object(kernel), handle_table(kernel), kernel(kernel), vm_manager(kernel.memory) {}
 | 
			
		||||
Kernel::Process::~Process() {}
 | 
			
		||||
 | 
			
		||||
SharedPtr<Process> KernelSystem::GetProcessById(u32 process_id) const {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,7 +8,6 @@
 | 
			
		|||
#include "core/hle/kernel/errors.h"
 | 
			
		||||
#include "core/hle/kernel/vm_manager.h"
 | 
			
		||||
#include "core/memory.h"
 | 
			
		||||
#include "core/memory_setup.h"
 | 
			
		||||
#include "core/mmio.h"
 | 
			
		||||
 | 
			
		||||
namespace Kernel {
 | 
			
		||||
| 
						 | 
				
			
			@ -37,7 +36,7 @@ bool VirtualMemoryArea::CanBeMergedWith(const VirtualMemoryArea& next) const {
 | 
			
		|||
    return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
VMManager::VMManager() {
 | 
			
		||||
VMManager::VMManager(Memory::MemorySystem& memory) : memory(memory) {
 | 
			
		||||
    Reset();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -351,13 +350,13 @@ VMManager::VMAIter VMManager::MergeAdjacent(VMAIter iter) {
 | 
			
		|||
void VMManager::UpdatePageTableForVMA(const VirtualMemoryArea& vma) {
 | 
			
		||||
    switch (vma.type) {
 | 
			
		||||
    case VMAType::Free:
 | 
			
		||||
        Memory::UnmapRegion(page_table, vma.base, vma.size);
 | 
			
		||||
        memory.UnmapRegion(page_table, vma.base, vma.size);
 | 
			
		||||
        break;
 | 
			
		||||
    case VMAType::BackingMemory:
 | 
			
		||||
        Memory::MapMemoryRegion(page_table, vma.base, vma.size, vma.backing_memory);
 | 
			
		||||
        memory.MapMemoryRegion(page_table, vma.base, vma.size, vma.backing_memory);
 | 
			
		||||
        break;
 | 
			
		||||
    case VMAType::MMIO:
 | 
			
		||||
        Memory::MapIoRegion(page_table, vma.base, vma.size, vma.mmio_handler);
 | 
			
		||||
        memory.MapIoRegion(page_table, vma.base, vma.size, vma.mmio_handler);
 | 
			
		||||
        break;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -113,7 +113,7 @@ public:
 | 
			
		|||
    std::map<VAddr, VirtualMemoryArea> vma_map;
 | 
			
		||||
    using VMAHandle = decltype(vma_map)::const_iterator;
 | 
			
		||||
 | 
			
		||||
    VMManager();
 | 
			
		||||
    explicit VMManager(Memory::MemorySystem& memory);
 | 
			
		||||
    ~VMManager();
 | 
			
		||||
 | 
			
		||||
    /// Clears the address space map, re-initializing with a single free area.
 | 
			
		||||
| 
						 | 
				
			
			@ -227,5 +227,7 @@ private:
 | 
			
		|||
 | 
			
		||||
    /// Updates the pages corresponding to this VMA so they match the VMA's attributes.
 | 
			
		||||
    void UpdatePageTableForVMA(const VirtualMemoryArea& vma);
 | 
			
		||||
 | 
			
		||||
    Memory::MemorySystem& memory;
 | 
			
		||||
};
 | 
			
		||||
} // namespace Kernel
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue