diff --git a/src/core/hle/kernel/vm_manager.cpp b/src/core/hle/kernel/vm_manager.cpp index 21bcee192..d3b55a51e 100644 --- a/src/core/hle/kernel/vm_manager.cpp +++ b/src/core/hle/kernel/vm_manager.cpp @@ -28,7 +28,7 @@ static const char* GetMemoryStateName(MemoryState state) { "IpcBuffer0", "Stack", "ThreadLocal", "TransferMemoryIsolated", "TransferMemory", "ProcessMemory", - "Unknown2", "IpcBuffer1", + "Inaccessible", "IpcBuffer1", "IpcBuffer3", "KernelStack", }; @@ -312,10 +312,10 @@ MemoryInfo VMManager::QueryMemory(VAddr address) const { memory_info.size = vma->second.size; memory_info.state = ToSvcMemoryState(vma->second.meminfo_state); } else { - memory_info.base_address = 0; + memory_info.base_address = address_space_end; memory_info.permission = static_cast(VMAPermission::None); - memory_info.size = 0; - memory_info.state = static_cast(MemoryState::Unmapped); + memory_info.size = 0 - address_space_end; + memory_info.state = static_cast(MemoryState::Inaccessible); } return memory_info; diff --git a/src/core/hle/kernel/vm_manager.h b/src/core/hle/kernel/vm_manager.h index 91e8e8c8c..7befa3526 100644 --- a/src/core/hle/kernel/vm_manager.h +++ b/src/core/hle/kernel/vm_manager.h @@ -105,6 +105,9 @@ enum class MemoryState : u32 { ProcessMemory = 0x0F | FlagIPC3 | FlagIPC1 | FlagMapped | FlagMemoryPoolAllocated, + // Used to signify an inaccessible or invalid memory region with memory queries + Inaccessible = 0x10, + IpcBuffer1 = 0x11 | FlagIPC3 | FlagIPC1 | FlagMapped | FlagQueryPhysicalAddressAllowed | FlagSharedDevice | FlagSharedDeviceAligned | FlagMemoryPoolAllocated,