diff options
author | bunnei <bunneidev@gmail.com> | 2017-10-19 23:00:46 -0400 |
---|---|---|
committer | bunnei <bunneidev@gmail.com> | 2017-10-19 23:00:46 -0400 |
commit | dcd6bb82f7a5bc1daaa8570f710ffb062fa4c596 (patch) | |
tree | 95f6a5d5f816a9c8a6367889dd4d551deb625eb0 /src/core/hle/svc.cpp | |
parent | 716e5cf070251b9147f5ceb877e4417382a6c63b (diff) |
hle: Fix QueryMemory response for MemoryInfo.
Diffstat (limited to 'src/core/hle/svc.cpp')
-rw-r--r-- | src/core/hle/svc.cpp | 28 |
1 files changed, 11 insertions, 17 deletions
diff --git a/src/core/hle/svc.cpp b/src/core/hle/svc.cpp index 9da6c0adf4..0401f763b1 100644 --- a/src/core/hle/svc.cpp +++ b/src/core/hle/svc.cpp @@ -110,28 +110,22 @@ static ResultCode QueryProcessMemory(MemoryInfo* memory_info, PageInfo* /*page_i Kernel::Handle process_handle, u64 addr) { using Kernel::Process; Kernel::SharedPtr<Process> process = Kernel::g_handle_table.Get<Process>(process_handle); - if (process == nullptr) + if (process == nullptr) { return ERR_INVALID_HANDLE; - + } auto vma = process->vm_manager.FindVMA(addr); - - if (vma == Kernel::g_current_process->vm_manager.vma_map.end()) - { - //return Kernel::ERR_INVALID_ADDRESS; - + memory_info->attributes = 0; + if (vma == Kernel::g_current_process->vm_manager.vma_map.end()) { memory_info->base_address = 0; - memory_info->permission = static_cast<u64>(Kernel::VMAPermission::None); + memory_info->permission = static_cast<u32>(Kernel::VMAPermission::None); memory_info->size = 0; - memory_info->state = static_cast<u64>(Kernel::MemoryState::Free); - - return RESULT_SUCCESS; + memory_info->type = static_cast<u32>(Kernel::MemoryState::Free); + } else { + memory_info->base_address = vma->second.base; + memory_info->permission = static_cast<u32>(vma->second.permissions); + memory_info->size = vma->second.size; + memory_info->type = static_cast<u32>(vma->second.meminfo_state); } - - memory_info->base_address = vma->second.base; - memory_info->permission = static_cast<u64>(vma->second.permissions); - memory_info->size = vma->second.size; - memory_info->state = static_cast<u64>(vma->second.meminfo_state); - LOG_TRACE(Kernel_SVC, "called process=0x%08X addr=%llx", process_handle, addr); return RESULT_SUCCESS; } |