summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/hle/kernel/board/nintendo/nx/k_system_control.cpp12
-rw-r--r--src/core/hle/kernel/board/nintendo/nx/k_system_control.h1
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
42size_t KSystemControl::Init::GetRealMemorySize() {
43 return GetIntendedMemorySize();
44}
45
42// Initialization. 46// Initialization.
43size_t KSystemControl::Init::GetIntendedMemorySize() { 47size_t KSystemControl::Init::GetIntendedMemorySize() {
44 switch (GetMemorySizeForInit()) { 48 switch (GetMemorySizeForInit()) {
@@ -53,7 +57,13 @@ size_t KSystemControl::Init::GetIntendedMemorySize() {
53} 57}
54 58
55PAddr KSystemControl::Init::GetKernelPhysicalBaseAddress(u64 base_address) { 59PAddr 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
59bool KSystemControl::Init::ShouldIncreaseThreadResourceLimit() { 69bool 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();