Merging of projects/armv6, part 2
Handle TLS for ARMv6 and ARMv7
This commit is contained in:
parent
2187caf32a
commit
0761ed2535
@ -57,7 +57,11 @@ void _tcb_dtor(struct tcb *);
|
||||
static __inline void
|
||||
_tcb_set(struct tcb *tcb)
|
||||
{
|
||||
*((struct tcb **)ARM_TP_ADDRESS) = tcb;
|
||||
#ifdef ARM_TP_ADDRESS
|
||||
*((struct tcb **)ARM_TP_ADDRESS) = tcb; /* avoids a system call */
|
||||
#else
|
||||
sysarch(ARM_SET_TP, tcb);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
@ -66,7 +70,15 @@ _tcb_set(struct tcb *tcb)
|
||||
static __inline struct tcb *
|
||||
_tcb_get(void)
|
||||
{
|
||||
#ifdef ARM_TP_ADDRESS
|
||||
return (*((struct tcb **)ARM_TP_ADDRESS));
|
||||
#else
|
||||
struct tcb *tcb;
|
||||
|
||||
__asm __volatile("mrc p15, 0, %0, c13, c0, 3" \
|
||||
: "=r" (tcb));
|
||||
return (tcb);
|
||||
#endif
|
||||
}
|
||||
|
||||
extern struct pthread *_thr_initial;
|
||||
|
Loading…
x
Reference in New Issue
Block a user