diff options
| author | 2023-10-20 17:08:00 +0200 | |
|---|---|---|
| committer | 2023-10-20 17:08:00 +0200 | |
| commit | 2e760a98333520f3de1fa7c7a1f9298fd7241ceb (patch) | |
| tree | 90e8a1aa75a91659c0b553f3746ea4febc0bf273 /src/core/hle/kernel/kernel.cpp | |
| parent | Merge pull request #11825 from liamwhite/system-resource (diff) | |
| parent | gdbstub: add PermissionLocked to mappings table (diff) | |
| download | yuzu-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.cpp | 23 |
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 |