Changeset View
Changeset View
Standalone View
Standalone View
head/lib/libc/gen/tls.c
Show First 20 Lines • Show All 72 Lines • ▼ Show 20 Lines | |||||
#if defined(__arm__) || defined(__mips__) || defined(__powerpc__) | #if defined(__arm__) || defined(__mips__) || defined(__powerpc__) | ||||
#define TLS_VARIANT_I | #define TLS_VARIANT_I | ||||
#endif | #endif | ||||
#if defined(__i386__) || defined(__amd64__) || defined(__sparc64__) | #if defined(__i386__) || defined(__amd64__) || defined(__sparc64__) | ||||
#define TLS_VARIANT_II | #define TLS_VARIANT_II | ||||
#endif | #endif | ||||
#ifndef PIC | #ifndef __PIC__ | ||||
#define round(size, align) \ | #define round(size, align) \ | ||||
(((size) + (align) - 1) & ~((align) - 1)) | (((size) + (align) - 1) & ~((align) - 1)) | ||||
static size_t tls_static_space; | static size_t tls_static_space; | ||||
static size_t tls_init_size; | static size_t tls_init_size; | ||||
static void *tls_init; | static void *tls_init; | ||||
#endif | #endif | ||||
Show All 12 Lines | |||||
#endif | #endif | ||||
void * | void * | ||||
__libc_tls_get_addr(void *ti __unused) | __libc_tls_get_addr(void *ti __unused) | ||||
{ | { | ||||
return (0); | return (0); | ||||
} | } | ||||
#ifndef PIC | #ifndef __PIC__ | ||||
#ifdef TLS_VARIANT_I | #ifdef TLS_VARIANT_I | ||||
#define TLS_TCB_SIZE (2 * sizeof(void *)) | #define TLS_TCB_SIZE (2 * sizeof(void *)) | ||||
/* | /* | ||||
* Free Static TLS using the Variant I method. | * Free Static TLS using the Variant I method. | ||||
*/ | */ | ||||
▲ Show 20 Lines • Show All 140 Lines • ▼ Show 20 Lines | |||||
} | } | ||||
void | void | ||||
__libc_free_tls(void *tcb __unused, size_t tcbsize __unused, | __libc_free_tls(void *tcb __unused, size_t tcbsize __unused, | ||||
size_t tcbalign __unused) | size_t tcbalign __unused) | ||||
{ | { | ||||
} | } | ||||
#endif /* PIC */ | #endif /* __PIC__ */ | ||||
extern char **environ; | extern char **environ; | ||||
void | void | ||||
_init_tls() | _init_tls() | ||||
{ | { | ||||
#ifndef PIC | #ifndef __PIC__ | ||||
Elf_Addr *sp; | Elf_Addr *sp; | ||||
Elf_Auxinfo *aux, *auxp; | Elf_Auxinfo *aux, *auxp; | ||||
Elf_Phdr *phdr; | Elf_Phdr *phdr; | ||||
size_t phent, phnum; | size_t phent, phnum; | ||||
int i; | int i; | ||||
void *tls; | void *tls; | ||||
sp = (Elf_Addr *) environ; | sp = (Elf_Addr *) environ; | ||||
▲ Show 20 Lines • Show All 44 Lines • Show Last 20 Lines |