Matt Thomas | 14 Feb 2012 17:57

Re: TLS register access trapping failure on Orion


On Feb 14, 2012, at 2:10 AM, Reinoud Zandijk wrote:
> 
> static __inline void *
> __lwp_getprivate_fast(void)
> {
>        void *rv;
>        __asm("mrc p15, 0, %0, c13, c0, 3" : "=r"(rv));
>        __asm("cmp %0, #0" : "=r"(rv));
>        __asm("mrceq p15, 0, %0, c13, c0, 1" : "=r"(rv));
>        return rv;
> }

Alas, it's not that simple.  You still to deal with setting the CONTEXT_ID register in cpu_setprivate and
saving/restoring it in cpu_switchto.

reg 3 is easy since it's only ARMV6 and above.  reg 1 is a lot harder since only some armv5 have it, but not all.


Gmane