yuzu-emu
/
yuzu-android
Archived
1
0
Fork 0

kernel/vm_manager: Rename CodeStatic/CodeMutable to Code and CodeData respectively

Makes it more evident that one is for actual code and one is for actual
data. Mutable and static are less than ideal terms here, because
read-only data is technically not mutable, but we were mapping it with
that label.
This commit is contained in:
Lioncash 2019-03-21 11:39:55 -04:00
parent 56c80a2a21
commit 18918f5f2f
4 changed files with 20 additions and 22 deletions

View File

@ -220,9 +220,9 @@ void Process::LoadModule(CodeSet module_, VAddr base_addr) {
}; };
// Map CodeSet segments // Map CodeSet segments
MapSegment(module_.CodeSegment(), VMAPermission::ReadExecute, MemoryState::CodeStatic); MapSegment(module_.CodeSegment(), VMAPermission::ReadExecute, MemoryState::Code);
MapSegment(module_.RODataSegment(), VMAPermission::Read, MemoryState::CodeMutable); MapSegment(module_.RODataSegment(), VMAPermission::Read, MemoryState::CodeData);
MapSegment(module_.DataSegment(), VMAPermission::ReadWrite, MemoryState::CodeMutable); MapSegment(module_.DataSegment(), VMAPermission::ReadWrite, MemoryState::CodeData);
// Clear instruction cache in CPU JIT // Clear instruction cache in CPU JIT
system.InvalidateCpuInstructionCaches(); system.InvalidateCpuInstructionCaches();

View File

@ -21,10 +21,10 @@ namespace {
const char* GetMemoryStateName(MemoryState state) { const char* GetMemoryStateName(MemoryState state) {
static constexpr const char* names[] = { static constexpr const char* names[] = {
"Unmapped", "Io", "Unmapped", "Io",
"Normal", "CodeStatic", "Normal", "Code",
"CodeMutable", "Heap", "CodeData", "Heap",
"Shared", "Unknown1", "Shared", "Unknown1",
"ModuleCodeStatic", "ModuleCodeMutable", "ModuleCode", "ModuleCodeData",
"IpcBuffer0", "Stack", "IpcBuffer0", "Stack",
"ThreadLocal", "TransferMemoryIsolated", "ThreadLocal", "TransferMemoryIsolated",
"TransferMemory", "ProcessMemory", "TransferMemory", "ProcessMemory",

View File

@ -165,12 +165,12 @@ enum class MemoryState : u32 {
Unmapped = 0x00, Unmapped = 0x00,
Io = 0x01 | FlagMapped, Io = 0x01 | FlagMapped,
Normal = 0x02 | FlagMapped | FlagQueryPhysicalAddressAllowed, Normal = 0x02 | FlagMapped | FlagQueryPhysicalAddressAllowed,
CodeStatic = 0x03 | CodeFlags | FlagMapProcess, Code = 0x03 | CodeFlags | FlagMapProcess,
CodeMutable = 0x04 | DataFlags | FlagMapProcess | FlagCodeMemory, CodeData = 0x04 | DataFlags | FlagMapProcess | FlagCodeMemory,
Heap = 0x05 | DataFlags | FlagCodeMemory, Heap = 0x05 | DataFlags | FlagCodeMemory,
Shared = 0x06 | FlagMapped | FlagMemoryPoolAllocated, Shared = 0x06 | FlagMapped | FlagMemoryPoolAllocated,
ModuleCodeStatic = 0x08 | CodeFlags | FlagModule | FlagMapProcess, ModuleCode = 0x08 | CodeFlags | FlagModule | FlagMapProcess,
ModuleCodeMutable = 0x09 | DataFlags | FlagModule | FlagMapProcess | FlagCodeMemory, ModuleCodeData = 0x09 | DataFlags | FlagModule | FlagMapProcess | FlagCodeMemory,
IpcBuffer0 = 0x0A | FlagMapped | FlagQueryPhysicalAddressAllowed | FlagMemoryPoolAllocated | IpcBuffer0 = 0x0A | FlagMapped | FlagQueryPhysicalAddressAllowed | FlagMemoryPoolAllocated |
IPCFlags | FlagSharedDevice | FlagSharedDeviceAligned, IPCFlags | FlagSharedDevice | FlagSharedDeviceAligned,

View File

@ -319,15 +319,14 @@ public:
} }
ASSERT(vm_manager ASSERT(vm_manager
.MirrorMemory(*map_address, nro_addr, nro_size, .MirrorMemory(*map_address, nro_addr, nro_size, Kernel::MemoryState::ModuleCode)
Kernel::MemoryState::ModuleCodeStatic)
.IsSuccess()); .IsSuccess());
ASSERT(vm_manager.UnmapRange(nro_addr, nro_size).IsSuccess()); ASSERT(vm_manager.UnmapRange(nro_addr, nro_size).IsSuccess());
if (bss_size > 0) { if (bss_size > 0) {
ASSERT(vm_manager ASSERT(vm_manager
.MirrorMemory(*map_address + nro_size, bss_addr, bss_size, .MirrorMemory(*map_address + nro_size, bss_addr, bss_size,
Kernel::MemoryState::ModuleCodeStatic) Kernel::MemoryState::ModuleCode)
.IsSuccess()); .IsSuccess());
ASSERT(vm_manager.UnmapRange(bss_addr, bss_size).IsSuccess()); ASSERT(vm_manager.UnmapRange(bss_addr, bss_size).IsSuccess());
} }
@ -388,8 +387,7 @@ public:
const auto& nro_size = iter->second.size; const auto& nro_size = iter->second.size;
ASSERT(vm_manager ASSERT(vm_manager
.MirrorMemory(heap_addr, mapped_addr, nro_size, .MirrorMemory(heap_addr, mapped_addr, nro_size, Kernel::MemoryState::ModuleCode)
Kernel::MemoryState::ModuleCodeStatic)
.IsSuccess()); .IsSuccess());
ASSERT(vm_manager.UnmapRange(mapped_addr, nro_size).IsSuccess()); ASSERT(vm_manager.UnmapRange(mapped_addr, nro_size).IsSuccess());