summaryrefslogtreecommitdiffstats
path: root/src/core/hle/service/ldr
diff options
context:
space:
mode:
authortech-ticks <techticksdev@gmail.com>2022-04-08 21:31:56 +0200
committertech-ticks <techticksdev@gmail.com>2022-04-09 13:29:19 +0200
commit3b91d213b172a0f66ba421d4583f1bf1a3dbdca6 (patch)
treeb6c7d389b3217543cf2b40794bb3c15934039166 /src/core/hle/service/ldr
parentMerge pull request #8162 from german77/bombslinger (diff)
downloadyuzu-3b91d213b172a0f66ba421d4583f1bf1a3dbdca6.tar
yuzu-3b91d213b172a0f66ba421d4583f1bf1a3dbdca6.tar.gz
yuzu-3b91d213b172a0f66ba421d4583f1bf1a3dbdca6.tar.bz2
yuzu-3b91d213b172a0f66ba421d4583f1bf1a3dbdca6.tar.lz
yuzu-3b91d213b172a0f66ba421d4583f1bf1a3dbdca6.tar.xz
yuzu-3b91d213b172a0f66ba421d4583f1bf1a3dbdca6.tar.zst
yuzu-3b91d213b172a0f66ba421d4583f1bf1a3dbdca6.zip
Diffstat (limited to 'src/core/hle/service/ldr')
-rw-r--r--src/core/hle/service/ldr/ldr.cpp30
1 files changed, 19 insertions, 11 deletions
diff --git a/src/core/hle/service/ldr/ldr.cpp b/src/core/hle/service/ldr/ldr.cpp
index 2477c5612..cf727c167 100644
--- a/src/core/hle/service/ldr/ldr.cpp
+++ b/src/core/hle/service/ldr/ldr.cpp
@@ -389,8 +389,12 @@ public:
if (bss_size) {
auto block_guard = detail::ScopeExit([&] {
- page_table.UnmapCodeMemory(addr + nro_size, bss_addr, bss_size);
- page_table.UnmapCodeMemory(addr, nro_addr, nro_size);
+ page_table.UnmapCodeMemory(
+ addr + nro_size, bss_addr, bss_size,
+ Kernel::KPageTable::ICacheInvalidationStrategy::InvalidateRange);
+ page_table.UnmapCodeMemory(
+ addr, nro_addr, nro_size,
+ Kernel::KPageTable::ICacheInvalidationStrategy::InvalidateRange);
});
const ResultCode result{
@@ -570,17 +574,21 @@ public:
auto& page_table{system.CurrentProcess()->PageTable()};
if (info.bss_size != 0) {
- CASCADE_CODE(page_table.UnmapCodeMemory(info.nro_address + info.text_size +
- info.ro_size + info.data_size,
- info.bss_address, info.bss_size));
+ CASCADE_CODE(page_table.UnmapCodeMemory(
+ info.nro_address + info.text_size + info.ro_size + info.data_size, info.bss_address,
+ info.bss_size, Kernel::KPageTable::ICacheInvalidationStrategy::InvalidateRange));
}
- CASCADE_CODE(page_table.UnmapCodeMemory(info.nro_address + info.text_size + info.ro_size,
- info.src_addr + info.text_size + info.ro_size,
- info.data_size));
- CASCADE_CODE(page_table.UnmapCodeMemory(info.nro_address + info.text_size,
- info.src_addr + info.text_size, info.ro_size));
- CASCADE_CODE(page_table.UnmapCodeMemory(info.nro_address, info.src_addr, info.text_size));
+ CASCADE_CODE(page_table.UnmapCodeMemory(
+ info.nro_address + info.text_size + info.ro_size,
+ info.src_addr + info.text_size + info.ro_size, info.data_size,
+ Kernel::KPageTable::ICacheInvalidationStrategy::InvalidateRange));
+ CASCADE_CODE(page_table.UnmapCodeMemory(
+ info.nro_address + info.text_size, info.src_addr + info.text_size, info.ro_size,
+ Kernel::KPageTable::ICacheInvalidationStrategy::InvalidateRange));
+ CASCADE_CODE(page_table.UnmapCodeMemory(
+ info.nro_address, info.src_addr, info.text_size,
+ Kernel::KPageTable::ICacheInvalidationStrategy::InvalidateRange));
return ResultSuccess;
}