diff options
Diffstat (limited to 'src/core/hle/kernel')
| -rw-r--r-- | src/core/hle/kernel/thread.cpp | 5 | 
1 files changed, 4 insertions, 1 deletions
| diff --git a/src/core/hle/kernel/thread.cpp b/src/core/hle/kernel/thread.cpp index fc0364d5f..b20092761 100644 --- a/src/core/hle/kernel/thread.cpp +++ b/src/core/hle/kernel/thread.cpp @@ -490,7 +490,8 @@ void Thread::BoostPriority(u32 priority) {      current_priority = priority;  } -SharedPtr<Thread> SetupMainThread(VAddr entry_point, u32 priority, SharedPtr<Process> owner_process) { +SharedPtr<Thread> SetupMainThread(VAddr entry_point, u32 priority, +                                  SharedPtr<Process> owner_process) {      // Setup page table so we can write to memory      SetCurrentPageTable(&Kernel::g_current_process->vm_manager.page_table); @@ -500,6 +501,8 @@ SharedPtr<Thread> SetupMainThread(VAddr entry_point, u32 priority, SharedPtr<Pro      SharedPtr<Thread> thread = std::move(thread_res).Unwrap(); +    // Register 1 must be a handle to the main thread +    thread->context.cpu_registers[1] = Kernel::g_handle_table.Create(thread).Unwrap();      thread->context.fpscr =          FPSCR_DEFAULT_NAN | FPSCR_FLUSH_TO_ZERO | FPSCR_ROUND_TOZERO | FPSCR_IXC; // 0x03C00010 | 
