This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


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_get_addr interface question.


>The question is if it should be __tls_get_addr and not say __tls_get_offset
>on s390*...
__tls_get_offset would be a better name for it. 

>Would you be passing %r12 to that routine as another argument
>or would it have some assembly wrapper which would do that?
We get the best code if __tls_get_offset would just take one parameter.
The assembler wrapper would load the got pointer of the calling object
from %r12 before going to C code. This requires that a caller of
__tls_get_offset needs to setup the got register first.
A straightforward implementation of __tls_get_offset would be to
add the got pointer to the offset in the first parameter register
(add %r12 to %r2), call __tls_get_addr and then substract the TCB pointer
from the result (substract %a0 from %r2).
If this is too ugly we could add a second argument to __tls_get_offset but
that results in slightly worse code in the caller.

blue skies,
   Martin


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