diff options
Diffstat (limited to 'src/core/hle')
| -rw-r--r-- | src/core/hle/kernel/board/nintendo/nx/k_system_control.cpp | 37 | ||||
| -rw-r--r-- | src/core/hle/kernel/k_address_space_info.cpp | 35 | ||||
| -rw-r--r-- | src/core/hle/kernel/k_memory_layout.board.nintendo_nx.cpp | 5 | ||||
| -rw-r--r-- | src/core/hle/kernel/k_memory_layout.h | 27 | ||||
| -rw-r--r-- | src/core/hle/kernel/k_page_table.cpp | 5 | ||||
| -rw-r--r-- | src/core/hle/kernel/k_trace.h | 6 | ||||
| -rw-r--r-- | src/core/hle/kernel/kernel.cpp | 17 | 
7 files changed, 74 insertions, 58 deletions
| diff --git a/src/core/hle/kernel/board/nintendo/nx/k_system_control.cpp b/src/core/hle/kernel/board/nintendo/nx/k_system_control.cpp index 86472b5ce..6f335c251 100644 --- a/src/core/hle/kernel/board/nintendo/nx/k_system_control.cpp +++ b/src/core/hle/kernel/board/nintendo/nx/k_system_control.cpp @@ -4,7 +4,8 @@  #include <random> -#include "common/common_sizes.h" +#include "common/literals.h" +  #include "core/hle/kernel/board/nintendo/nx/k_system_control.h"  #include "core/hle/kernel/board/nintendo/nx/secure_monitor.h"  #include "core/hle/kernel/k_trace.h" @@ -25,6 +26,8 @@ constexpr const std::size_t RequiredNonSecureSystemMemorySize =  namespace { +using namespace Common::Literals; +  u32 GetMemoryModeForInit() {      return 0x01;  } @@ -57,11 +60,11 @@ size_t KSystemControl::Init::GetIntendedMemorySize() {      switch (GetMemorySizeForInit()) {      case Smc::MemorySize_4GB:      default: // All invalid modes should go to 4GB. -        return Common::Size_4_GB; +        return 4_GiB;      case Smc::MemorySize_6GB: -        return Common::Size_6_GB; +        return 6_GiB;      case Smc::MemorySize_8GB: -        return Common::Size_8_GB; +        return 8_GiB;      }  } @@ -79,17 +82,17 @@ std::size_t KSystemControl::Init::GetApplicationPoolSize() {          switch (GetMemoryArrangeForInit()) {          case Smc::MemoryArrangement_4GB:          default: -            return Common::Size_3285_MB; +            return 3285_MiB;          case Smc::MemoryArrangement_4GBForAppletDev: -            return Common::Size_2048_MB; +            return 2048_MiB;          case Smc::MemoryArrangement_4GBForSystemDev: -            return Common::Size_3285_MB; +            return 3285_MiB;          case Smc::MemoryArrangement_6GB: -            return Common::Size_4916_MB; +            return 4916_MiB;          case Smc::MemoryArrangement_6GBForAppletDev: -            return Common::Size_3285_MB; +            return 3285_MiB;          case Smc::MemoryArrangement_8GB: -            return Common::Size_4916_MB; +            return 4916_MiB;          }      }(); @@ -103,22 +106,22 @@ size_t KSystemControl::Init::GetAppletPoolSize() {          switch (GetMemoryArrangeForInit()) {          case Smc::MemoryArrangement_4GB:          default: -            return Common::Size_507_MB; +            return 507_MiB;          case Smc::MemoryArrangement_4GBForAppletDev: -            return Common::Size_1554_MB; +            return 1554_MiB;          case Smc::MemoryArrangement_4GBForSystemDev: -            return Common::Size_448_MB; +            return 448_MiB;          case Smc::MemoryArrangement_6GB: -            return Common::Size_562_MB; +            return 562_MiB;          case Smc::MemoryArrangement_6GBForAppletDev: -            return Common::Size_2193_MB; +            return 2193_MiB;          case Smc::MemoryArrangement_8GB: -            return Common::Size_2193_MB; +            return 2193_MiB;          }      }();      // Return (possibly) adjusted size. -    constexpr size_t ExtraSystemMemoryForAtmosphere = Common::Size_33_MB; +    constexpr size_t ExtraSystemMemoryForAtmosphere = 33_MiB;      return base_pool_size - ExtraSystemMemoryForAtmosphere - KTraceBufferSize;  } diff --git a/src/core/hle/kernel/k_address_space_info.cpp b/src/core/hle/kernel/k_address_space_info.cpp index c7549f7a2..ca29edc88 100644 --- a/src/core/hle/kernel/k_address_space_info.cpp +++ b/src/core/hle/kernel/k_address_space_info.cpp @@ -5,34 +5,37 @@  #include <array>  #include "common/assert.h" -#include "common/common_sizes.h" +#include "common/literals.h"  #include "core/hle/kernel/k_address_space_info.h"  namespace Kernel {  namespace { +using namespace Common::Literals; + +constexpr u64 Size_Invalid = UINT64_MAX; +  // clang-format off  constexpr std::array<KAddressSpaceInfo, 13> AddressSpaceInfos{{ -   { .bit_width = 32, .address = Common::Size_2_MB   , .size = Common::Size_1_GB   - Common::Size_2_MB  , .type = KAddressSpaceInfo::Type::MapSmall, }, -   { .bit_width = 32, .address = Common::Size_1_GB   , .size = Common::Size_4_GB   - Common::Size_1_GB  , .type = KAddressSpaceInfo::Type::MapLarge, }, -   { .bit_width = 32, .address = Common::Size_Invalid, .size = Common::Size_1_GB                        , .type = KAddressSpaceInfo::Type::Alias,    }, -   { .bit_width = 32, .address = Common::Size_Invalid, .size = Common::Size_1_GB                        , .type = KAddressSpaceInfo::Type::Heap,     }, -   { .bit_width = 36, .address = Common::Size_128_MB , .size = Common::Size_2_GB   - Common::Size_128_MB, .type = KAddressSpaceInfo::Type::MapSmall, }, -   { .bit_width = 36, .address = Common::Size_2_GB   , .size = Common::Size_64_GB  - Common::Size_2_GB  , .type = KAddressSpaceInfo::Type::MapLarge, }, -   { .bit_width = 36, .address = Common::Size_Invalid, .size = Common::Size_6_GB                        , .type = KAddressSpaceInfo::Type::Heap,     }, -   { .bit_width = 36, .address = Common::Size_Invalid, .size = Common::Size_6_GB                        , .type = KAddressSpaceInfo::Type::Alias,    }, -   { .bit_width = 39, .address = Common::Size_128_MB , .size = Common::Size_512_GB - Common::Size_128_MB, .type = KAddressSpaceInfo::Type::Map39Bit, }, -   { .bit_width = 39, .address = Common::Size_Invalid, .size = Common::Size_64_GB                       , .type = KAddressSpaceInfo::Type::MapSmall  }, -   { .bit_width = 39, .address = Common::Size_Invalid, .size = Common::Size_6_GB                        , .type = KAddressSpaceInfo::Type::Heap,     }, -   { .bit_width = 39, .address = Common::Size_Invalid, .size = Common::Size_64_GB                       , .type = KAddressSpaceInfo::Type::Alias,    }, -   { .bit_width = 39, .address = Common::Size_Invalid, .size = Common::Size_2_GB                        , .type = KAddressSpaceInfo::Type::Stack,    }, +   { .bit_width = 32, .address = 2_MiB       , .size = 1_GiB   - 2_MiB  , .type = KAddressSpaceInfo::Type::MapSmall, }, +   { .bit_width = 32, .address = 1_GiB       , .size = 4_GiB   - 1_GiB  , .type = KAddressSpaceInfo::Type::MapLarge, }, +   { .bit_width = 32, .address = Size_Invalid, .size = 1_GiB            , .type = KAddressSpaceInfo::Type::Alias,    }, +   { .bit_width = 32, .address = Size_Invalid, .size = 1_GiB            , .type = KAddressSpaceInfo::Type::Heap,     }, +   { .bit_width = 36, .address = 128_MiB     , .size = 2_GiB   - 128_MiB, .type = KAddressSpaceInfo::Type::MapSmall, }, +   { .bit_width = 36, .address = 2_GiB       , .size = 64_GiB  - 2_GiB  , .type = KAddressSpaceInfo::Type::MapLarge, }, +   { .bit_width = 36, .address = Size_Invalid, .size = 6_GiB            , .type = KAddressSpaceInfo::Type::Heap,     }, +   { .bit_width = 36, .address = Size_Invalid, .size = 6_GiB            , .type = KAddressSpaceInfo::Type::Alias,    }, +   { .bit_width = 39, .address = 128_MiB     , .size = 512_GiB - 128_MiB, .type = KAddressSpaceInfo::Type::Map39Bit, }, +   { .bit_width = 39, .address = Size_Invalid, .size = 64_GiB           , .type = KAddressSpaceInfo::Type::MapSmall  }, +   { .bit_width = 39, .address = Size_Invalid, .size = 6_GiB            , .type = KAddressSpaceInfo::Type::Heap,     }, +   { .bit_width = 39, .address = Size_Invalid, .size = 64_GiB           , .type = KAddressSpaceInfo::Type::Alias,    }, +   { .bit_width = 39, .address = Size_Invalid, .size = 2_GiB            , .type = KAddressSpaceInfo::Type::Stack,    },  }};  // clang-format on  constexpr bool IsAllowedIndexForAddress(std::size_t index) { -    return index < AddressSpaceInfos.size() && -           AddressSpaceInfos[index].address != Common::Size_Invalid; +    return index < AddressSpaceInfos.size() && AddressSpaceInfos[index].address != Size_Invalid;  }  using IndexArray = diff --git a/src/core/hle/kernel/k_memory_layout.board.nintendo_nx.cpp b/src/core/hle/kernel/k_memory_layout.board.nintendo_nx.cpp index a78551291..af652af58 100644 --- a/src/core/hle/kernel/k_memory_layout.board.nintendo_nx.cpp +++ b/src/core/hle/kernel/k_memory_layout.board.nintendo_nx.cpp @@ -3,6 +3,7 @@  // Refer to the license.txt file included.  #include "common/alignment.h" +#include "common/literals.h"  #include "core/hle/kernel/k_memory_layout.h"  #include "core/hle/kernel/k_memory_manager.h"  #include "core/hle/kernel/k_system_control.h" @@ -12,8 +13,10 @@ namespace Kernel {  namespace { +using namespace Common::Literals; +  constexpr size_t CarveoutAlignment = 0x20000; -constexpr size_t CarveoutSizeMax = (512ULL * 1024 * 1024) - CarveoutAlignment; +constexpr size_t CarveoutSizeMax = (512_MiB) - CarveoutAlignment;  bool SetupPowerManagementControllerMemoryRegion(KMemoryLayout& memory_layout) {      // Above firmware 2.0.0, the PMC is not mappable. diff --git a/src/core/hle/kernel/k_memory_layout.h b/src/core/hle/kernel/k_memory_layout.h index 288642d9a..57ff538cc 100644 --- a/src/core/hle/kernel/k_memory_layout.h +++ b/src/core/hle/kernel/k_memory_layout.h @@ -7,8 +7,7 @@  #include <utility>  #include "common/alignment.h" -#include "common/common_sizes.h" -#include "common/common_types.h" +#include "common/literals.h"  #include "core/device_memory.h"  #include "core/hle/kernel/k_memory_region.h"  #include "core/hle/kernel/k_memory_region_type.h" @@ -16,20 +15,22 @@  namespace Kernel { -constexpr std::size_t L1BlockSize = Common::Size_1_GB; -constexpr std::size_t L2BlockSize = Common::Size_2_MB; +using namespace Common::Literals; + +constexpr std::size_t L1BlockSize = 1_GiB; +constexpr std::size_t L2BlockSize = 2_MiB;  constexpr std::size_t GetMaximumOverheadSize(std::size_t size) {      return (Common::DivideUp(size, L1BlockSize) + Common::DivideUp(size, L2BlockSize)) * PageSize;  } -constexpr std::size_t MainMemorySize = Common::Size_4_GB; -constexpr std::size_t MainMemorySizeMax = Common::Size_8_GB; +constexpr std::size_t MainMemorySize = 4_GiB; +constexpr std::size_t MainMemorySizeMax = 8_GiB; -constexpr std::size_t ReservedEarlyDramSize = 0x60000; +constexpr std::size_t ReservedEarlyDramSize = 384_KiB;  constexpr std::size_t DramPhysicalAddress = 0x80000000; -constexpr std::size_t KernelAslrAlignment = Common::Size_2_MB; +constexpr std::size_t KernelAslrAlignment = 2_MiB;  constexpr std::size_t KernelVirtualAddressSpaceWidth = 1ULL << 39;  constexpr std::size_t KernelPhysicalAddressSpaceWidth = 1ULL << 48; @@ -40,7 +41,7 @@ constexpr std::size_t KernelVirtualAddressSpaceLast = KernelVirtualAddressSpaceE  constexpr std::size_t KernelVirtualAddressSpaceSize =      KernelVirtualAddressSpaceEnd - KernelVirtualAddressSpaceBase;  constexpr std::size_t KernelVirtualAddressCodeBase = KernelVirtualAddressSpaceBase; -constexpr std::size_t KernelVirtualAddressCodeSize = 0x62000; +constexpr std::size_t KernelVirtualAddressCodeSize = 392_KiB;  constexpr std::size_t KernelVirtualAddressCodeEnd =      KernelVirtualAddressCodeBase + KernelVirtualAddressCodeSize; @@ -53,14 +54,14 @@ constexpr std::size_t KernelPhysicalAddressSpaceSize =  constexpr std::size_t KernelPhysicalAddressCodeBase = DramPhysicalAddress + ReservedEarlyDramSize;  constexpr std::size_t KernelPageTableHeapSize = GetMaximumOverheadSize(MainMemorySizeMax); -constexpr std::size_t KernelInitialPageHeapSize = Common::Size_128_KB; +constexpr std::size_t KernelInitialPageHeapSize = 128_KiB; -constexpr std::size_t KernelSlabHeapDataSize = Common::Size_5_MB; -constexpr std::size_t KernelSlabHeapGapsSize = Common::Size_2_MB - Common::Size_64_KB; +constexpr std::size_t KernelSlabHeapDataSize = 5_MiB; +constexpr std::size_t KernelSlabHeapGapsSize = 2_MiB - 64_KiB;  constexpr std::size_t KernelSlabHeapSize = KernelSlabHeapDataSize + KernelSlabHeapGapsSize;  // NOTE: This is calculated from KThread slab counts, assuming KThread size <= 0x860. -constexpr std::size_t KernelSlabHeapAdditionalSize = 0x68000ULL; +constexpr std::size_t KernelSlabHeapAdditionalSize = 416_KiB;  constexpr std::size_t KernelResourceSize =      KernelPageTableHeapSize + KernelInitialPageHeapSize + KernelSlabHeapSize; diff --git a/src/core/hle/kernel/k_page_table.cpp b/src/core/hle/kernel/k_page_table.cpp index 66d260635..701268545 100644 --- a/src/core/hle/kernel/k_page_table.cpp +++ b/src/core/hle/kernel/k_page_table.cpp @@ -4,6 +4,7 @@  #include "common/alignment.h"  #include "common/assert.h" +#include "common/literals.h"  #include "common/scope_exit.h"  #include "core/core.h"  #include "core/hle/kernel/k_address_space_info.h" @@ -23,6 +24,8 @@ namespace Kernel {  namespace { +using namespace Common::Literals; +  constexpr std::size_t GetAddressSpaceWidthFromType(FileSys::ProgramAddressSpaceType as_type) {      switch (as_type) {      case FileSys::ProgramAddressSpaceType::Is32Bit: @@ -89,7 +92,7 @@ ResultCode KPageTable::InitializeForProcess(FileSys::ProgramAddressSpaceType as_      }      // Set code regions and determine remaining -    constexpr std::size_t RegionAlignment{2 * 1024 * 1024}; +    constexpr std::size_t RegionAlignment{2_MiB};      VAddr process_code_start{};      VAddr process_code_end{};      std::size_t stack_region_size{}; diff --git a/src/core/hle/kernel/k_trace.h b/src/core/hle/kernel/k_trace.h index 91ebf9ab2..79391bccb 100644 --- a/src/core/hle/kernel/k_trace.h +++ b/src/core/hle/kernel/k_trace.h @@ -4,9 +4,13 @@  #pragma once +#include "common/common_funcs.h" +  namespace Kernel { +using namespace Common::Literals; +  constexpr bool IsKTraceEnabled = false; -constexpr std::size_t KTraceBufferSize = IsKTraceEnabled ? 16 * 1024 * 1024 : 0; +constexpr std::size_t KTraceBufferSize = IsKTraceEnabled ? 16_MiB : 0;  } // namespace Kernel diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp index 2ceeaeb5f..64bd0c494 100644 --- a/src/core/hle/kernel/kernel.cpp +++ b/src/core/hle/kernel/kernel.cpp @@ -12,7 +12,6 @@  #include <utility>  #include "common/assert.h" -#include "common/common_sizes.h"  #include "common/logging/log.h"  #include "common/microprofile.h"  #include "common/thread.h" @@ -180,7 +179,7 @@ struct KernelCore::Impl {          system_resource_limit->Reserve(LimitableResource::PhysicalMemory, kernel_size);          // Reserve secure applet memory, introduced in firmware 5.0.0 -        constexpr u64 secure_applet_memory_size{Common::Size_4_MB}; +        constexpr u64 secure_applet_memory_size{4_MiB};          ASSERT(system_resource_limit->Reserve(LimitableResource::PhysicalMemory,                                                secure_applet_memory_size)); @@ -320,8 +319,8 @@ struct KernelCore::Impl {          const VAddr code_end_virt_addr = KernelVirtualAddressCodeEnd;          // Setup the containing kernel region. -        constexpr size_t KernelRegionSize = Common::Size_1_GB; -        constexpr size_t KernelRegionAlign = Common::Size_1_GB; +        constexpr size_t KernelRegionSize = 1_GiB; +        constexpr size_t KernelRegionAlign = 1_GiB;          constexpr VAddr kernel_region_start =              Common::AlignDown(code_start_virt_addr, KernelRegionAlign);          size_t kernel_region_size = KernelRegionSize; @@ -368,7 +367,7 @@ struct KernelCore::Impl {          // Decide on the actual size for the misc region.          constexpr size_t MiscRegionAlign = KernelAslrAlignment; -        constexpr size_t MiscRegionMinimumSize = Common::Size_32_MB; +        constexpr size_t MiscRegionMinimumSize = 32_MiB;          const size_t misc_region_size = Common::AlignUp(              std::max(misc_region_needed_size, MiscRegionMinimumSize), MiscRegionAlign);          ASSERT(misc_region_size > 0); @@ -381,7 +380,7 @@ struct KernelCore::Impl {              misc_region_start, misc_region_size, KMemoryRegionType_KernelMisc));          // Setup the stack region. -        constexpr size_t StackRegionSize = Common::Size_14_MB; +        constexpr size_t StackRegionSize = 14_MiB;          constexpr size_t StackRegionAlign = KernelAslrAlignment;          const VAddr stack_region_start =              memory_layout.GetVirtualMemoryRegionTree().GetRandomAlignedRegion( @@ -414,7 +413,7 @@ struct KernelCore::Impl {              slab_region_start, slab_region_size, KMemoryRegionType_KernelSlab));          // Setup the temp region. -        constexpr size_t TempRegionSize = Common::Size_128_MB; +        constexpr size_t TempRegionSize = 128_MiB;          constexpr size_t TempRegionAlign = KernelAslrAlignment;          const VAddr temp_region_start =              memory_layout.GetVirtualMemoryRegionTree().GetRandomAlignedRegion( @@ -470,7 +469,7 @@ struct KernelCore::Impl {          // Determine size available for kernel page table heaps, requiring > 8 MB.          const PAddr 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; -        ASSERT(page_table_heap_size / Common::Size_4_MB > 2); +        ASSERT(page_table_heap_size / 4_MiB > 2);          // Insert a physical region for the kernel page table heap region          ASSERT(memory_layout.GetPhysicalMemoryRegionTree().Insert( @@ -495,7 +494,7 @@ struct KernelCore::Impl {          ASSERT(linear_extents.GetEndAddress() != 0);          // Setup the linear mapping region. -        constexpr size_t LinearRegionAlign = Common::Size_1_GB; +        constexpr size_t LinearRegionAlign = 1_GiB;          const PAddr aligned_linear_phys_start =              Common::AlignDown(linear_extents.GetAddress(), LinearRegionAlign);          const size_t linear_region_size = | 
