diff --git a/lib/libc/gen/tls.c b/lib/libc/gen/tls.c --- a/lib/libc/gen/tls.c +++ b/lib/libc/gen/tls.c @@ -72,11 +72,14 @@ void *__libc_allocate_tls(void *oldtls, size_t tcbsize, size_t tcbalign); void __libc_free_tls(void *tls, size_t tcbsize, size_t tcbalign); -#if defined(__amd64__) +#if defined(__amd64__) || defined(__aarch64__) || defined(__riscv) #define TLS_TCB_ALIGN 16 -#elif defined(__aarch64__) || defined(__arm__) || defined(__i386__) || \ - defined(__mips__) || defined(__powerpc__) || defined(__riscv) -#define TLS_TCB_ALIGN sizeof(void *) +#elif defined(__arm__) || defined(__mips__) +#define TLS_TCB_ALIGN 8 +#elif defined(__powerpc__) +#define TLS_TCB_ALIGN TLS_TCB_SIZE +#elif defined(__i386__) +#define TLS_TCB_ALIGN 4 #else #error TLS_TCB_ALIGN undefined for target architecture #endif