diff --git a/Kernel/Process.h b/Kernel/Process.h index 7d2caa8d6b..9a72ca13ff 100644 --- a/Kernel/Process.h +++ b/Kernel/Process.h @@ -305,7 +305,7 @@ public: int sys$sched_setparam(pid_t pid, Userspace); int sys$sched_getparam(pid_t pid, Userspace); int sys$create_thread(void* (*)(void*), Userspace); - void sys$exit_thread(void*); + void sys$exit_thread(Userspace); int sys$join_thread(pid_t tid, Userspace exit_value); int sys$detach_thread(pid_t tid); int sys$set_thread_name(pid_t tid, Userspace buffer, size_t buffer_size); diff --git a/Kernel/Syscall.cpp b/Kernel/Syscall.cpp index 43370594e5..97d7fc5013 100644 --- a/Kernel/Syscall.cpp +++ b/Kernel/Syscall.cpp @@ -95,7 +95,7 @@ int handle(RegisterState& regs, u32 function, u32 arg1, u32 arg2, u32 arg3) if (function == SC_exit) process.sys$exit((int)arg1); else - process.sys$exit_thread((void*)arg1); + process.sys$exit_thread(arg1); ASSERT_NOT_REACHED(); return 0; } diff --git a/Kernel/Syscalls/thread.cpp b/Kernel/Syscalls/thread.cpp index e67bfc0d96..39e59baff9 100644 --- a/Kernel/Syscalls/thread.cpp +++ b/Kernel/Syscalls/thread.cpp @@ -90,12 +90,12 @@ int Process::sys$create_thread(void* (*entry)(void*), Userspacetid().value(); } -void Process::sys$exit_thread(void* exit_value) +void Process::sys$exit_thread(Userspace exit_value) { REQUIRE_PROMISE(thread); cli(); auto current_thread = Thread::current(); - current_thread->m_exit_value = exit_value; + current_thread->m_exit_value = reinterpret_cast(exit_value.ptr()); current_thread->set_should_die(); big_lock().force_unlock_if_locked(); current_thread->die_if_needed();