]> git.ipfire.org Git - thirdparty/glibc.git/blobdiff - sysdeps/arm/dl-tlsdesc.S
Update copyright dates with scripts/update-copyrights.
[thirdparty/glibc.git] / sysdeps / arm / dl-tlsdesc.S
index 1644a32793765b0d849e58be73ab4845fc4a73a1..a929340b4246f6b47130d54eafebe98c35880578 100644 (file)
@@ -1,5 +1,5 @@
 /* Thread-local storage handling in the ELF dynamic linker.  ARM version.
-   Copyright (C) 2006-2014 Free Software Foundation, Inc.
+   Copyright (C) 2006-2019 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -32,8 +32,7 @@
        eabi_fnstart
        .align 2
 _dl_tlsdesc_return:
-       sfi_breg r0, \
-       ldr     r0, [\B]
+       ldr     r0, [r0]
        BX      (lr)
        eabi_fnend
        cfi_endproc
@@ -92,30 +91,23 @@ _dl_tlsdesc_dynamic:
        cfi_rel_offset (r3,4)
        cfi_rel_offset (r4,8)
        cfi_rel_offset (lr,12)
-       sfi_breg r0, \
-       ldr     r1, [\B] /* td */
+       ldr     r1, [r0] /* td */
        GET_TLS (lr)
        mov     r4, r0 /* r4 = tp */
-       sfi_breg r0, \
-       ldr     r0, [\B]
-       sfi_breg r1, \
-       ldr     r2, [\B, #8] /* gen_count */
-       sfi_breg r0, \
-       ldr     r3, [\B]
+       ldr     r0, [r0]
+       ldr     r2, [r1, #8] /* gen_count */
+       ldr     r3, [r0]
        cmp     r2, r3
        bhi     1f
-       sfi_breg r1, \
-       ldr     r3, [\B]
+       ldr     r3, [r1]
 #ifndef ARM_NO_INDEX_REGISTER
        ldr     r2, [r0, r3, lsl #3]
 #else
        add     lr, r0, r3, lsl #3
-       sfi_breg lr, \
-       ldr     r2, [\B]
+       ldr     r2, [lr]
 #endif
        cmn     r2, #1
        ittt    ne
-       sfi_breg r1, \
        ldrne   r3, [r1, #4]
        addne   r3, r2, r3
        rsbne   r0, r4, r3
@@ -140,87 +132,3 @@ _dl_tlsdesc_dynamic:
        cfi_endproc
        .size   _dl_tlsdesc_dynamic, .-_dl_tlsdesc_dynamic
 #endif /* SHARED */
-
-/* lazy resolved for tls descriptors.  */
-       .hidden _dl_tlsdesc_lazy_resolver
-       .global _dl_tlsdesc_lazy_resolver
-       .type   _dl_tlsdesc_lazy_resolver,#function
-       cfi_startproc
-       eabi_fnstart
-       .align 2
-_dl_tlsdesc_lazy_resolver:
-       /* r0 points at the tlsdesc,
-          r1 points at the GOT
-          r2 was pushed by the trampoline and used as a temp,
-             we need to pop it here.
-         We push the remaining call-clobbered registers here, and also
-         R1 -- to keep the stack correctly aligned.  */
-       /* Tell the unwinder that r2 has already been pushed.  */
-       eabi_save ({r2})
-       cfi_adjust_cfa_offset (4)
-       cfi_rel_offset (r2, 0)
-       eabi_save ({r0,r1,r3,ip,lr})
-       push    {r0, r1, r3, ip, lr}
-       cfi_adjust_cfa_offset (20)
-       cfi_rel_offset (r0, 0)
-       cfi_rel_offset (r1, 4)
-       cfi_rel_offset (r3, 8)
-       cfi_rel_offset (ip, 12)
-       cfi_rel_offset (lr, 16)
-       bl      _dl_tlsdesc_lazy_resolver_fixup
-       pop     {r0, r1, r3, ip, lr}
-       cfi_adjust_cfa_offset (-20)
-       cfi_restore (lr)
-       cfi_restore (ip)
-       cfi_restore (r3)
-       cfi_restore (r1)
-       cfi_restore (r0)
-       pop     {r2}
-       cfi_adjust_cfa_offset (-4)
-       cfi_restore (r2)
-       sfi_breg r0, \
-       ldr     r1, [\B, #4]
-       BX      (r1)
-       eabi_fnend
-       cfi_endproc
-       .size   _dl_tlsdesc_lazy_resolver, .-_dl_tlsdesc_lazy_resolver
-
-/* Holder for lazy tls descriptors being resolve in another thread.
-   Same ABI as the lazy resolver itself.  */
-       .hidden _dl_tlsdesc_resolve_hold
-       .global _dl_tlsdesc_resolve_hold
-       .type   _dl_tlsdesc_resolve_hold,#function
-       cfi_startproc
-       eabi_fnstart
-       .align 2
-_dl_tlsdesc_resolve_hold:
-       /* Tell the unwinder that r2 has already been pushed.  */
-       eabi_save ({r2})
-       cfi_adjust_cfa_offset (4)
-       cfi_rel_offset (r2, 0)
-       eabi_save ({r0,r1,r3,ip,lr})
-       push    {r0, r1, r3, ip, lr}
-       cfi_adjust_cfa_offset (20)
-       cfi_rel_offset (r0, 0)
-       cfi_rel_offset (r1, 4)
-       cfi_rel_offset (r3, 8)
-       cfi_rel_offset (ip, 12)
-       cfi_rel_offset (lr, 16)
-       adr     r2, _dl_tlsdesc_resolve_hold
-       bl      _dl_tlsdesc_resolve_hold_fixup
-       pop     {r0, r1, r3, ip, lr}
-       cfi_adjust_cfa_offset (-20)
-       cfi_restore (lr)
-       cfi_restore (ip)
-       cfi_restore (r3)
-       cfi_restore (r1)
-       cfi_restore (r0)
-       pop     {r2}
-       cfi_adjust_cfa_offset (-4)
-       cfi_restore (r2)
-       sfi_breg r0, \
-       ldr     r1, [\B, #4]
-       BX      (r1)
-       eabi_fnend
-       cfi_endproc
-       .size   _dl_tlsdesc_resolve_hold, .-_dl_tlsdesc_resolve_hold