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
|
static __inline void
|
||||||
_tcb_set(struct tcb *tcb)
|
_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 *
|
static __inline struct tcb *
|
||||||
_tcb_get(void)
|
_tcb_get(void)
|
||||||
{
|
{
|
||||||
|
#ifdef ARM_TP_ADDRESS
|
||||||
return (*((struct tcb **)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;
|
extern struct pthread *_thr_initial;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user