summaryrefslogtreecommitdiffstats
path: root/src/core/hle
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2020-11-03 17:52:40 +0100
committerGitHub <noreply@github.com>2020-11-03 17:52:40 +0100
commit448e4d5c2a84fcb438fbd85599553daa80228d78 (patch)
treec96515670925606b61a33aee9888dd6499d3cfae /src/core/hle
parentMerge pull request #4865 from ameerj/async-threadcount (diff)
parenthle: service: ldr: Implement UnloadNrr. (diff)
downloadyuzu-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/hle')
-rw-r--r--src/core/hle/service/ldr/ldr.cpp16
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};