summaryrefslogtreecommitdiffstats
path: root/src/core/hle/kernel/kernel.cpp
diff options
context:
space:
mode:
authorFernando S <fsahmkow27@gmail.com>2023-10-20 17:08:00 +0200
committerGitHub <noreply@github.com>2023-10-20 17:08:00 +0200
commit2e760a98333520f3de1fa7c7a1f9298fd7241ceb (patch)
tree90e8a1aa75a91659c0b553f3746ea4febc0bf273 /src/core/hle/kernel/kernel.cpp
parentMerge pull request #11825 from liamwhite/system-resource (diff)
parentgdbstub: add PermissionLocked to mappings table (diff)
downloadyuzu-2e760a98333520f3de1fa7c7a1f9298fd7241ceb.tar
yuzu-2e760a98333520f3de1fa7c7a1f9298fd7241ceb.tar.gz
yuzu-2e760a98333520f3de1fa7c7a1f9298fd7241ceb.tar.bz2
yuzu-2e760a98333520f3de1fa7c7a1f9298fd7241ceb.tar.lz
yuzu-2e760a98333520f3de1fa7c7a1f9298fd7241ceb.tar.xz
yuzu-2e760a98333520f3de1fa7c7a1f9298fd7241ceb.tar.zst
yuzu-2e760a98333520f3de1fa7c7a1f9298fd7241ceb.zip
Diffstat (limited to 'src/core/hle/kernel/kernel.cpp')
-rw-r--r--src/core/hle/kernel/kernel.cpp23
1 files changed, 21 insertions, 2 deletions
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp
index cb025c3d6..24433d32b 100644
--- a/src/core/hle/kernel/kernel.cpp
+++ b/src/core/hle/kernel/kernel.cpp
@@ -623,14 +623,33 @@ struct KernelCore::Impl {
ASSERT(memory_layout->GetPhysicalMemoryRegionTree().Insert(
GetInteger(slab_start_phys_addr), slab_region_size, KMemoryRegionType_DramKernelSlab));
+ // Insert a physical region for the secure applet memory.
+ const auto secure_applet_end_phys_addr =
+ slab_end_phys_addr + KSystemControl::SecureAppletMemorySize;
+ if constexpr (KSystemControl::SecureAppletMemorySize > 0) {
+ ASSERT(memory_layout->GetPhysicalMemoryRegionTree().Insert(
+ GetInteger(slab_end_phys_addr), KSystemControl::SecureAppletMemorySize,
+ KMemoryRegionType_DramKernelSecureAppletMemory));
+ }
+
+ // Insert a physical region for the unknown debug2 region.
+ constexpr size_t SecureUnknownRegionSize = 0;
+ const size_t secure_unknown_size = SecureUnknownRegionSize;
+ const auto secure_unknown_end_phys_addr = secure_applet_end_phys_addr + secure_unknown_size;
+ if constexpr (SecureUnknownRegionSize > 0) {
+ ASSERT(memory_layout->GetPhysicalMemoryRegionTree().Insert(
+ GetInteger(secure_applet_end_phys_addr), secure_unknown_size,
+ KMemoryRegionType_DramKernelSecureUnknown));
+ }
+
// Determine size available for kernel page table heaps, requiring > 8 MB.
const KPhysicalAddress resource_end_phys_addr = slab_start_phys_addr + resource_region_size;
- const size_t page_table_heap_size = resource_end_phys_addr - slab_end_phys_addr;
+ const size_t page_table_heap_size = resource_end_phys_addr - secure_unknown_end_phys_addr;
ASSERT(page_table_heap_size / 4_MiB > 2);
// Insert a physical region for the kernel page table heap region
ASSERT(memory_layout->GetPhysicalMemoryRegionTree().Insert(
- GetInteger(slab_end_phys_addr), page_table_heap_size,
+ GetInteger(secure_unknown_end_phys_addr), page_table_heap_size,
KMemoryRegionType_DramKernelPtHeap));
// All DRAM regions that we haven't tagged by this point will be mapped under the linear