diff options
| -rw-r--r-- | src/core/hle/kernel/svc.cpp | 10 | ||||
| -rw-r--r-- | src/core/hle/kernel/thread.h | 5 |
2 files changed, 7 insertions, 8 deletions
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp index bf77ce137..047fa0c19 100644 --- a/src/core/hle/kernel/svc.cpp +++ b/src/core/hle/kernel/svc.cpp | |||
| @@ -1284,10 +1284,14 @@ static ResultCode StartThread(Handle thread_handle) { | |||
| 1284 | 1284 | ||
| 1285 | /// Called when a thread exits | 1285 | /// Called when a thread exits |
| 1286 | static void ExitThread() { | 1286 | static void ExitThread() { |
| 1287 | LOG_TRACE(Kernel_SVC, "called, pc=0x{:08X}", Core::CurrentArmInterface().GetPC()); | 1287 | auto& system = Core::System::GetInstance(); |
| 1288 | 1288 | ||
| 1289 | ExitCurrentThread(); | 1289 | LOG_TRACE(Kernel_SVC, "called, pc=0x{:08X}", system.CurrentArmInterface().GetPC()); |
| 1290 | Core::System::GetInstance().PrepareReschedule(); | 1290 | |
| 1291 | auto* const current_thread = system.CurrentScheduler().GetCurrentThread(); | ||
| 1292 | current_thread->Stop(); | ||
| 1293 | system.CurrentScheduler().RemoveThread(current_thread); | ||
| 1294 | system.PrepareReschedule(); | ||
| 1291 | } | 1295 | } |
| 1292 | 1296 | ||
| 1293 | /// Sleep the current thread | 1297 | /// Sleep the current thread |
diff --git a/src/core/hle/kernel/thread.h b/src/core/hle/kernel/thread.h index d7c7a31f7..ccdefeecc 100644 --- a/src/core/hle/kernel/thread.h +++ b/src/core/hle/kernel/thread.h | |||
| @@ -463,9 +463,4 @@ private: | |||
| 463 | */ | 463 | */ |
| 464 | Thread* GetCurrentThread(); | 464 | Thread* GetCurrentThread(); |
| 465 | 465 | ||
| 466 | /** | ||
| 467 | * Stops the current thread and removes it from the thread_list | ||
| 468 | */ | ||
| 469 | void ExitCurrentThread(); | ||
| 470 | |||
| 471 | } // namespace Kernel | 466 | } // namespace Kernel |