summaryrefslogtreecommitdiff
path: root/src/core/hle/kernel
diff options
context:
space:
mode:
authorGravatar bunnei2022-03-02 18:06:26 -0800
committerGravatar bunnei2022-03-08 17:38:20 -0800
commit853e58e5932c4703bb521b5454a9b0fc325c7152 (patch)
tree5bf52ede3772c7361d0805b5142b22cc6e1acf15 /src/core/hle/kernel
parentMerge pull request #7986 from lat9nq/vk-callback (diff)
downloadyuzu-853e58e5932c4703bb521b5454a9b0fc325c7152.tar.gz
yuzu-853e58e5932c4703bb521b5454a9b0fc325c7152.tar.xz
yuzu-853e58e5932c4703bb521b5454a9b0fc325c7152.zip
hle: service: ldr: Use deterministic addresses when mapping NROs.
- Instead of randomization, choose in-order addresses for where to map NROs into memory. - This results in predictable behavior when debugging and consistent behavior when reproducing issues.
Diffstat (limited to 'src/core/hle/kernel')
-rw-r--r--src/core/hle/kernel/k_page_table.h8
1 files changed, 3 insertions, 5 deletions
diff --git a/src/core/hle/kernel/k_page_table.h b/src/core/hle/kernel/k_page_table.h
index aea1b8f63..e99abe36a 100644
--- a/src/core/hle/kernel/k_page_table.h
+++ b/src/core/hle/kernel/k_page_table.h
@@ -253,7 +253,9 @@ public:
253 constexpr bool IsInsideASLRRegion(VAddr address, std::size_t size) const { 253 constexpr bool IsInsideASLRRegion(VAddr address, std::size_t size) const {
254 return !IsOutsideASLRRegion(address, size); 254 return !IsOutsideASLRRegion(address, size);
255 } 255 }
256 256 constexpr std::size_t GetNumGuardPages() const {
257 return IsKernel() ? 1 : 4;
258 }
257 PAddr GetPhysicalAddr(VAddr addr) const { 259 PAddr GetPhysicalAddr(VAddr addr) const {
258 const auto backing_addr = page_table_impl.backing_addr[addr >> PageBits]; 260 const auto backing_addr = page_table_impl.backing_addr[addr >> PageBits];
259 ASSERT(backing_addr); 261 ASSERT(backing_addr);
@@ -275,10 +277,6 @@ private:
275 return is_aslr_enabled; 277 return is_aslr_enabled;
276 } 278 }
277 279
278 constexpr std::size_t GetNumGuardPages() const {
279 return IsKernel() ? 1 : 4;
280 }
281
282 constexpr bool ContainsPages(VAddr addr, std::size_t num_pages) const { 280 constexpr bool ContainsPages(VAddr addr, std::size_t num_pages) const {
283 return (address_space_start <= addr) && 281 return (address_space_start <= addr) &&
284 (num_pages <= (address_space_end - address_space_start) / PageSize) && 282 (num_pages <= (address_space_end - address_space_start) / PageSize) &&