summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar bunnei2022-01-08 23:23:43 -0800
committerGravatar bunnei2022-01-11 16:28:11 -0800
commit6ac44f3bdca29c3b0530aa600b914c5952e525f3 (patch)
tree9eec1c9b3d882c440df2fa152bb9aff94f3c7bbe
parenthle: kernel: k_page_table: ReadAndWrite -> UserReadWrite. (diff)
downloadyuzu-6ac44f3bdca29c3b0530aa600b914c5952e525f3.tar.gz
yuzu-6ac44f3bdca29c3b0530aa600b914c5952e525f3.tar.xz
yuzu-6ac44f3bdca29c3b0530aa600b914c5952e525f3.zip
hle: service: ldr: UnmapCodeMemory BSS only when set.
-rw-r--r--src/core/hle/service/ldr/ldr.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/core/hle/service/ldr/ldr.cpp b/src/core/hle/service/ldr/ldr.cpp
index 061358863..28d8114c5 100644
--- a/src/core/hle/service/ldr/ldr.cpp
+++ b/src/core/hle/service/ldr/ldr.cpp
@@ -530,9 +530,13 @@ public:
530 ResultCode UnmapNro(const NROInfo& info) { 530 ResultCode UnmapNro(const NROInfo& info) {
531 // Each region must be unmapped separately to validate memory state 531 // Each region must be unmapped separately to validate memory state
532 auto& page_table{system.CurrentProcess()->PageTable()}; 532 auto& page_table{system.CurrentProcess()->PageTable()};
533 CASCADE_CODE(page_table.UnmapCodeMemory(info.nro_address + info.text_size + info.ro_size + 533
534 info.data_size, 534 if (info.bss_size != 0) {
535 info.bss_address, info.bss_size)); 535 CASCADE_CODE(page_table.UnmapCodeMemory(info.nro_address + info.text_size +
536 info.ro_size + info.data_size,
537 info.bss_address, info.bss_size));
538 }
539
536 CASCADE_CODE(page_table.UnmapCodeMemory(info.nro_address + info.text_size + info.ro_size, 540 CASCADE_CODE(page_table.UnmapCodeMemory(info.nro_address + info.text_size + info.ro_size,
537 info.src_addr + info.text_size + info.ro_size, 541 info.src_addr + info.text_size + info.ro_size,
538 info.data_size)); 542 info.data_size));