mirror of
https://github.com/Lime3DS/Lime3DS
synced 2024-12-26 09:02:44 -06:00
Thread: Correctly set main thread initial stack position
This commit is contained in:
parent
e98fbadf4a
commit
d16c2bd956
3 changed files with 4 additions and 5 deletions
|
@ -85,7 +85,7 @@ void Process::ParseKernelCaps(const u32* kernel_caps, size_t len) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Process::Run(VAddr entry_point, s32 main_thread_priority, u32 stack_size) {
|
void Process::Run(VAddr entry_point, s32 main_thread_priority, u32 stack_size) {
|
||||||
Kernel::SetupMainThread(stack_size, entry_point, main_thread_priority);
|
Kernel::SetupMainThread(entry_point, main_thread_priority);
|
||||||
}
|
}
|
||||||
|
|
||||||
Kernel::Process::Process() {}
|
Kernel::Process::Process() {}
|
||||||
|
|
|
@ -458,12 +458,12 @@ SharedPtr<Thread> SetupIdleThread() {
|
||||||
return thread;
|
return thread;
|
||||||
}
|
}
|
||||||
|
|
||||||
SharedPtr<Thread> SetupMainThread(u32 stack_size, u32 entry_point, s32 priority) {
|
SharedPtr<Thread> SetupMainThread(u32 entry_point, s32 priority) {
|
||||||
DEBUG_ASSERT(!GetCurrentThread());
|
DEBUG_ASSERT(!GetCurrentThread());
|
||||||
|
|
||||||
// Initialize new "main" thread
|
// Initialize new "main" thread
|
||||||
auto thread_res = Thread::Create("main", entry_point, priority, 0,
|
auto thread_res = Thread::Create("main", entry_point, priority, 0,
|
||||||
THREADPROCESSORID_0, Memory::HEAP_VADDR_END - stack_size);
|
THREADPROCESSORID_0, Memory::HEAP_VADDR_END);
|
||||||
|
|
||||||
SharedPtr<Thread> thread = thread_res.MoveFrom();
|
SharedPtr<Thread> thread = thread_res.MoveFrom();
|
||||||
|
|
||||||
|
|
|
@ -181,12 +181,11 @@ private:
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets up the primary application thread
|
* Sets up the primary application thread
|
||||||
* @param stack_size The size of the thread's stack
|
|
||||||
* @param entry_point The address at which the thread should start execution
|
* @param entry_point The address at which the thread should start execution
|
||||||
* @param priority The priority to give the main thread
|
* @param priority The priority to give the main thread
|
||||||
* @return A shared pointer to the main thread
|
* @return A shared pointer to the main thread
|
||||||
*/
|
*/
|
||||||
SharedPtr<Thread> SetupMainThread(u32 stack_size, u32 entry_point, s32 priority);
|
SharedPtr<Thread> SetupMainThread(u32 entry_point, s32 priority);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reschedules to the next available thread (call after current thread is suspended)
|
* Reschedules to the next available thread (call after current thread is suspended)
|
||||||
|
|
Loading…
Reference in a new issue