/branches/arm/uspace/libc/arch/arm32/include/thread.h |
---|
39,6 → 39,8 |
#define THREAD_INITIAL_STACK_PAGES_NO 1 |
#define ARM_TP_OFFSET (-8) |
typedef struct { |
void *pst_data; |
} tcb_t; |
45,7 → 47,8 |
static inline void __tcb_set(tcb_t *tcb) |
{ |
void *tls = (void *)tcb + sizeof(tcb_t); |
void *tls = (void *)tcb; |
tls += sizeof(tcb_t) + ARM_TP_OFFSET; |
asm volatile ( |
"mov r9, %0" |
: |
60,8 → 63,7 |
"mov %0, r9" |
: "=r"(ret) |
); |
ret -= sizeof(tcb_t); |
return (tcb_t *)ret; |
return (tcb_t *)(ret - ARM_TP_OFFSET - sizeof(tcb_t)); |
} |
#endif |