From e85b18e206c100a2ae0de2829858f796cf4e2dd2 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Wed, 2 Apr 2025 12:49:45 +0300 Subject: [PATCH] LibC: Fix pthread stack alignment --- userspace/libraries/LibC/pthread.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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));