diff options
author | bunnei <bunneidev@gmail.com> | 2020-11-03 17:52:40 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-03 17:52:40 +0100 |
commit | 448e4d5c2a84fcb438fbd85599553daa80228d78 (patch) | |
tree | c96515670925606b61a33aee9888dd6499d3cfae /src/core | |
parent | Merge pull request #4865 from ameerj/async-threadcount (diff) | |
parent | hle: service: ldr: Implement UnloadNrr. (diff) | |
download | yuzu-448e4d5c2a84fcb438fbd85599553daa80228d78.tar yuzu-448e4d5c2a84fcb438fbd85599553daa80228d78.tar.gz yuzu-448e4d5c2a84fcb438fbd85599553daa80228d78.tar.bz2 yuzu-448e4d5c2a84fcb438fbd85599553daa80228d78.tar.lz yuzu-448e4d5c2a84fcb438fbd85599553daa80228d78.tar.xz yuzu-448e4d5c2a84fcb438fbd85599553daa80228d78.tar.zst yuzu-448e4d5c2a84fcb438fbd85599553daa80228d78.zip |
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/hle/service/ldr/ldr.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/core/hle/service/ldr/ldr.cpp b/src/core/hle/service/ldr/ldr.cpp index 9ad5bbf0d..eeaca44b6 100644 --- a/src/core/hle/service/ldr/ldr.cpp +++ b/src/core/hle/service/ldr/ldr.cpp @@ -166,7 +166,7 @@ public: {0, &RelocatableObject::LoadNro, "LoadNro"}, {1, &RelocatableObject::UnloadNro, "UnloadNro"}, {2, &RelocatableObject::LoadNrr, "LoadNrr"}, - {3, nullptr, "UnloadNrr"}, + {3, &RelocatableObject::UnloadNrr, "UnloadNrr"}, {4, &RelocatableObject::Initialize, "Initialize"}, {10, nullptr, "LoadNrrEx"}, }; @@ -272,6 +272,20 @@ public: rb.Push(RESULT_SUCCESS); } + void UnloadNrr(Kernel::HLERequestContext& ctx) { + IPC::RequestParser rp{ctx}; + const auto pid = rp.Pop<u64>(); + const auto nrr_address = rp.Pop<VAddr>(); + + LOG_DEBUG(Service_LDR, "called with pid={}, nrr_address={:016X}", pid, nrr_address); + + nrr.erase(nrr_address); + + IPC::ResponseBuilder rb{ctx, 2}; + + rb.Push(RESULT_SUCCESS); + } + bool ValidateRegionForMap(Kernel::Memory::PageTable& page_table, VAddr start, std::size_t size) const { constexpr std::size_t padding_size{4 * Kernel::Memory::PageSize}; |