diff options
| author | 2018-03-14 22:08:15 -0400 | |
|---|---|---|
| committer | 2018-03-16 18:32:23 -0400 | |
| commit | 8581404482e31b6ef6adc522b303baddaec760ec (patch) | |
| tree | 816e82fbebfd41fbc55435b63b58fd5f50342b53 /src | |
| parent | memory: Add regions for map region, "new" map region, etc. (diff) | |
| download | yuzu-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.h | 4 | ||||
| -rw-r--r-- | src/core/hle/kernel/process.cpp | 5 | ||||
| -rw-r--r-- | src/core/hle/kernel/thread.cpp | 2 | ||||
| -rw-r--r-- | src/core/loader/elf.cpp | 2 | ||||
| -rw-r--r-- | src/core/loader/nro.cpp | 2 | ||||
| -rw-r--r-- | src/core/loader/nso.cpp | 2 |
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 | ||
| 36 | enum { | ||
| 37 | DEFAULT_STACK_SIZE = 0x10000, | ||
| 38 | }; | ||
| 39 | |||
| 40 | enum class ResetType { | 36 | enum 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; |