diff options
| author | 2022-02-21 17:05:19 -0800 | |
|---|---|---|
| committer | 2022-02-27 10:34:02 -0800 | |
| commit | 9b5e7971dc3b31721499cd44ffd049132718c49f (patch) | |
| tree | 87970581bcb00a92bd223cbbe5e18ec40500a5a6 /src | |
| parent | hle: kernel: k_memory_layout: Add GetPhysicalLinearRegion. (diff) | |
| download | yuzu-9b5e7971dc3b31721499cd44ffd049132718c49f.tar.gz yuzu-9b5e7971dc3b31721499cd44ffd049132718c49f.tar.xz yuzu-9b5e7971dc3b31721499cd44ffd049132718c49f.zip | |
hle: kernel: k_system_control: Add GetRealMemorySize and update GetKernelPhysicalBaseAddress.
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/hle/kernel/board/nintendo/nx/k_system_control.cpp | 12 | ||||
| -rw-r--r-- | src/core/hle/kernel/board/nintendo/nx/k_system_control.h | 1 |
2 files changed, 12 insertions, 1 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 702cacffc..8027bec00 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 | |||
| @@ -39,6 +39,10 @@ Smc::MemoryArrangement GetMemoryArrangeForInit() { | |||
| 39 | } | 39 | } |
| 40 | } // namespace | 40 | } // namespace |
| 41 | 41 | ||
| 42 | size_t KSystemControl::Init::GetRealMemorySize() { | ||
| 43 | return GetIntendedMemorySize(); | ||
| 44 | } | ||
| 45 | |||
| 42 | // Initialization. | 46 | // Initialization. |
| 43 | size_t KSystemControl::Init::GetIntendedMemorySize() { | 47 | size_t KSystemControl::Init::GetIntendedMemorySize() { |
| 44 | switch (GetMemorySizeForInit()) { | 48 | switch (GetMemorySizeForInit()) { |
| @@ -53,7 +57,13 @@ size_t KSystemControl::Init::GetIntendedMemorySize() { | |||
| 53 | } | 57 | } |
| 54 | 58 | ||
| 55 | PAddr KSystemControl::Init::GetKernelPhysicalBaseAddress(u64 base_address) { | 59 | PAddr KSystemControl::Init::GetKernelPhysicalBaseAddress(u64 base_address) { |
| 56 | return base_address; | 60 | const size_t real_dram_size = KSystemControl::Init::GetRealMemorySize(); |
| 61 | const size_t intended_dram_size = KSystemControl::Init::GetIntendedMemorySize(); | ||
| 62 | if (intended_dram_size * 2 < real_dram_size) { | ||
| 63 | return base_address; | ||
| 64 | } else { | ||
| 65 | return base_address + ((real_dram_size - intended_dram_size) / 2); | ||
| 66 | } | ||
| 57 | } | 67 | } |
| 58 | 68 | ||
| 59 | bool KSystemControl::Init::ShouldIncreaseThreadResourceLimit() { | 69 | bool KSystemControl::Init::ShouldIncreaseThreadResourceLimit() { |
diff --git a/src/core/hle/kernel/board/nintendo/nx/k_system_control.h b/src/core/hle/kernel/board/nintendo/nx/k_system_control.h index 52f230ced..df2a17f2a 100644 --- a/src/core/hle/kernel/board/nintendo/nx/k_system_control.h +++ b/src/core/hle/kernel/board/nintendo/nx/k_system_control.h | |||
| @@ -13,6 +13,7 @@ public: | |||
| 13 | class Init { | 13 | class Init { |
| 14 | public: | 14 | public: |
| 15 | // Initialization. | 15 | // Initialization. |
| 16 | static std::size_t GetRealMemorySize(); | ||
| 16 | static std::size_t GetIntendedMemorySize(); | 17 | static std::size_t GetIntendedMemorySize(); |
| 17 | static PAddr GetKernelPhysicalBaseAddress(u64 base_address); | 18 | static PAddr GetKernelPhysicalBaseAddress(u64 base_address); |
| 18 | static bool ShouldIncreaseThreadResourceLimit(); | 19 | static bool ShouldIncreaseThreadResourceLimit(); |