summaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/kernel.cpp
diff options
context:
space:
mode:
authorGravatar Fernando S2023-10-20 17:08:00 +0200
committerGravatar GitHub2023-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.gz
yuzu-2e760a98333520f3de1fa7c7a1f9298fd7241ceb.tar.xz
yuzu-2e760a98333520f3de1fa7c7a1f9298fd7241ceb.zip
Merge pull request #11748 from liamwhite/kern_1700
kernel: update for 17.0.0
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 {
623 ASSERT(memory_layout->GetPhysicalMemoryRegionTree().Insert( 623 ASSERT(memory_layout->GetPhysicalMemoryRegionTree().Insert(
624 GetInteger(slab_start_phys_addr), slab_region_size, KMemoryRegionType_DramKernelSlab)); 624 GetInteger(slab_start_phys_addr), slab_region_size, KMemoryRegionType_DramKernelSlab));
625 625
626 // Insert a physical region for the secure applet memory.
627 const auto secure_applet_end_phys_addr =
628 slab_end_phys_addr + KSystemControl::SecureAppletMemorySize;
629 if constexpr (KSystemControl::SecureAppletMemorySize > 0) {
630 ASSERT(memory_layout->GetPhysicalMemoryRegionTree().Insert(
631 GetInteger(slab_end_phys_addr), KSystemControl::SecureAppletMemorySize,
632 KMemoryRegionType_DramKernelSecureAppletMemory));
633 }
634
635 // Insert a physical region for the unknown debug2 region.
636 constexpr size_t SecureUnknownRegionSize = 0;
637 const size_t secure_unknown_size = SecureUnknownRegionSize;
638 const auto secure_unknown_end_phys_addr = secure_applet_end_phys_addr + secure_unknown_size;
639 if constexpr (SecureUnknownRegionSize > 0) {
640 ASSERT(memory_layout->GetPhysicalMemoryRegionTree().Insert(
641 GetInteger(secure_applet_end_phys_addr), secure_unknown_size,
642 KMemoryRegionType_DramKernelSecureUnknown));
643 }
644
626 // Determine size available for kernel page table heaps, requiring > 8 MB. 645 // Determine size available for kernel page table heaps, requiring > 8 MB.
627 const KPhysicalAddress resource_end_phys_addr = slab_start_phys_addr + resource_region_size; 646 const KPhysicalAddress resource_end_phys_addr = slab_start_phys_addr + resource_region_size;
628 const size_t page_table_heap_size = resource_end_phys_addr - slab_end_phys_addr; 647 const size_t page_table_heap_size = resource_end_phys_addr - secure_unknown_end_phys_addr;
629 ASSERT(page_table_heap_size / 4_MiB > 2); 648 ASSERT(page_table_heap_size / 4_MiB > 2);
630 649
631 // Insert a physical region for the kernel page table heap region 650 // Insert a physical region for the kernel page table heap region
632 ASSERT(memory_layout->GetPhysicalMemoryRegionTree().Insert( 651 ASSERT(memory_layout->GetPhysicalMemoryRegionTree().Insert(
633 GetInteger(slab_end_phys_addr), page_table_heap_size, 652 GetInteger(secure_unknown_end_phys_addr), page_table_heap_size,
634 KMemoryRegionType_DramKernelPtHeap)); 653 KMemoryRegionType_DramKernelPtHeap));
635 654
636 // All DRAM regions that we haven't tagged by this point will be mapped under the linear 655 // All DRAM regions that we haven't tagged by this point will be mapped under the linear