diff --git a/userspace/libraries/LibC/pthread.cpp b/userspace/libraries/LibC/pthread.cpp index 3d0941f2..ab75c899 100644 --- a/userspace/libraries/LibC/pthread.cpp +++ b/userspace/libraries/LibC/pthread.cpp @@ -15,7 +15,11 @@ struct pthread_trampoline_info_t void* arg; }; -static void pthread_trampoline(void* arg) +// stack is 16 byte aligned on entry, this `call` is used to align it +extern "C" void pthread_trampoline(void*); +asm("pthread_trampoline: call pthread_trampoline_cpp"); + +extern "C" void pthread_trampoline_cpp(void* arg) { pthread_trampoline_info_t info; memcpy(&info, arg, sizeof(pthread_trampoline_info_t));