This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: TLS support on ARM


On Thu, Dec 03, 2009 at 05:09:38PM +0000, Thomas Klein wrote:
> This might be the initial plan.
> But is this true?

It is true because a typical implementation of this function has no
need to clobber registers.  For instance, glibc's calls a kernel
helper this way:

0x00015810 <__aeabi_read_tp+0>: mvn     r0, #61440      ; 0xf000
0x00015814 <__aeabi_read_tp+4>: sub     pc, r0, #31

The kernel helper reads from a fixed location or a hardware register,
both of which are a single instruction.  No temporary registers are
required.

> A "bl __aeabi_read_tp" call does not exchanging the mode.
> So the program simply crashes.

The linker is responsibe for converting bl to blx, or for inserting
mode changing stubs.  It is also responsible for long calls.  Unless
you're using a really old linker, I can't see why you would have any
problems.  Do you have a concrete problem?

> Is the implementation still incomplete?

No.  It's been finished for two years or more.

-- 
Daniel Jacobowitz
CodeSourcery


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]