summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar bunnei2018-03-14 22:08:15 -0400
committerGravatar bunnei2018-03-16 18:32:23 -0400
commit8581404482e31b6ef6adc522b303baddaec760ec (patch)
tree816e82fbebfd41fbc55435b63b58fd5f50342b53 /src
parentmemory: Add regions for map region, "new" map region, etc. (diff)
downloadyuzu-8581404482e31b6ef6adc522b303baddaec760ec.tar.gz
yuzu-8581404482e31b6ef6adc522b303baddaec760ec.tar.xz
yuzu-8581404482e31b6ef6adc522b303baddaec760ec.zip
kernel: Move stack region outside of application heap.
Diffstat (limited to 'src')
-rw-r--r--src/core/hle/kernel/kernel.h4
-rw-r--r--src/core/hle/kernel/process.cpp5
-rw-r--r--src/core/hle/kernel/thread.cpp2
-rw-r--r--src/core/loader/elf.cpp2
-rw-r--r--src/core/loader/nro.cpp2
-rw-r--r--src/core/loader/nso.cpp2
6 files changed, 6 insertions, 11 deletions
diff --git a/src/core/hle/kernel/kernel.h b/src/core/hle/kernel/kernel.h
index c77e58f3c..053bf4e17 100644
--- a/src/core/hle/kernel/kernel.h
+++ b/src/core/hle/kernel/kernel.h
@@ -33,10 +33,6 @@ enum class HandleType : u32 {
33 ServerSession, 33 ServerSession,
34}; 34};
35 35
36enum {
37 DEFAULT_STACK_SIZE = 0x10000,
38};
39
40enum class ResetType { 36enum class ResetType {
41 OneShot, 37 OneShot,
42 Sticky, 38 Sticky,
diff --git a/src/core/hle/kernel/process.cpp b/src/core/hle/kernel/process.cpp
index 8987a0e38..5711b5247 100644
--- a/src/core/hle/kernel/process.cpp
+++ b/src/core/hle/kernel/process.cpp
@@ -121,9 +121,8 @@ void Process::Run(VAddr entry_point, s32 main_thread_priority, u32 stack_size) {
121 // TODO(bunnei): This is heap area that should be allocated by the kernel and not mapped as part 121 // TODO(bunnei): This is heap area that should be allocated by the kernel and not mapped as part
122 // of the user address space. 122 // of the user address space.
123 vm_manager 123 vm_manager
124 .MapMemoryBlock(Memory::HEAP_VADDR_END - stack_size, 124 .MapMemoryBlock(Memory::STACK_VADDR, std::make_shared<std::vector<u8>>(stack_size, 0), 0,
125 std::make_shared<std::vector<u8>>(stack_size, 0), 0, stack_size, 125 stack_size, MemoryState::Mapped)
126 MemoryState::Mapped)
127 .Unwrap(); 126 .Unwrap();
128 misc_memory_used += stack_size; 127 misc_memory_used += stack_size;
129 memory_region->used += stack_size; 128 memory_region->used += stack_size;
diff --git a/src/core/hle/kernel/thread.cpp b/src/core/hle/kernel/thread.cpp
index 419ad1e63..a39c53db5 100644
--- a/src/core/hle/kernel/thread.cpp
+++ b/src/core/hle/kernel/thread.cpp
@@ -357,7 +357,7 @@ SharedPtr<Thread> SetupMainThread(VAddr entry_point, u32 priority,
357 357
358 // Initialize new "main" thread 358 // Initialize new "main" thread
359 auto thread_res = Thread::Create("main", entry_point, priority, 0, THREADPROCESSORID_0, 359 auto thread_res = Thread::Create("main", entry_point, priority, 0, THREADPROCESSORID_0,
360 Memory::HEAP_VADDR_END, owner_process); 360 Memory::STACK_VADDR_END, owner_process);
361 361
362 SharedPtr<Thread> thread = std::move(thread_res).Unwrap(); 362 SharedPtr<Thread> thread = std::move(thread_res).Unwrap();
363 363
diff --git a/src/core/loader/elf.cpp b/src/core/loader/elf.cpp
index 164d52258..0ba8c6fd2 100644
--- a/src/core/loader/elf.cpp
+++ b/src/core/loader/elf.cpp
@@ -414,7 +414,7 @@ ResultStatus AppLoader_ELF::Load(Kernel::SharedPtr<Kernel::Process>& process) {
414 process->resource_limit = 414 process->resource_limit =
415 Kernel::ResourceLimit::GetForCategory(Kernel::ResourceLimitCategory::APPLICATION); 415 Kernel::ResourceLimit::GetForCategory(Kernel::ResourceLimitCategory::APPLICATION);
416 416
417 process->Run(codeset->entrypoint, 48, Kernel::DEFAULT_STACK_SIZE); 417 process->Run(codeset->entrypoint, 48, Memory::STACK_SIZE);
418 418
419 is_loaded = true; 419 is_loaded = true;
420 return ResultStatus::Success; 420 return ResultStatus::Success;
diff --git a/src/core/loader/nro.cpp b/src/core/loader/nro.cpp
index 0dc06ccea..6dcd1ce48 100644
--- a/src/core/loader/nro.cpp
+++ b/src/core/loader/nro.cpp
@@ -137,7 +137,7 @@ ResultStatus AppLoader_NRO::Load(Kernel::SharedPtr<Kernel::Process>& process) {
137 process->address_mappings = default_address_mappings; 137 process->address_mappings = default_address_mappings;
138 process->resource_limit = 138 process->resource_limit =
139 Kernel::ResourceLimit::GetForCategory(Kernel::ResourceLimitCategory::APPLICATION); 139 Kernel::ResourceLimit::GetForCategory(Kernel::ResourceLimitCategory::APPLICATION);
140 process->Run(base_addr, 48, Kernel::DEFAULT_STACK_SIZE); 140 process->Run(base_addr, 48, Memory::STACK_SIZE);
141 141
142 is_loaded = true; 142 is_loaded = true;
143 return ResultStatus::Success; 143 return ResultStatus::Success;
diff --git a/src/core/loader/nso.cpp b/src/core/loader/nso.cpp
index c0eeb95d3..100aa022e 100644
--- a/src/core/loader/nso.cpp
+++ b/src/core/loader/nso.cpp
@@ -165,7 +165,7 @@ ResultStatus AppLoader_NSO::Load(Kernel::SharedPtr<Kernel::Process>& process) {
165 process->address_mappings = default_address_mappings; 165 process->address_mappings = default_address_mappings;
166 process->resource_limit = 166 process->resource_limit =
167 Kernel::ResourceLimit::GetForCategory(Kernel::ResourceLimitCategory::APPLICATION); 167 Kernel::ResourceLimit::GetForCategory(Kernel::ResourceLimitCategory::APPLICATION);
168 process->Run(Memory::PROCESS_IMAGE_VADDR, 48, Kernel::DEFAULT_STACK_SIZE); 168 process->Run(Memory::PROCESS_IMAGE_VADDR, 48, Memory::STACK_SIZE);
169 169
170 is_loaded = true; 170 is_loaded = true;
171 return ResultStatus::Success; 171 return ResultStatus::Success;