about summary refs log tree commit diff
path: root/sysdeps/s390/dl-tls.h
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/s390/dl-tls.h')
-rw-r--r--sysdeps/s390/dl-tls.h104
1 files changed, 0 insertions, 104 deletions
diff --git a/sysdeps/s390/dl-tls.h b/sysdeps/s390/dl-tls.h
deleted file mode 100644
index 3298acfbcf..0000000000
--- a/sysdeps/s390/dl-tls.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/* Thread-local storage handling in the ELF dynamic linker.  s390 version.
-   Copyright (C) 2003-2017 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
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-
-/* Type used for the representation of TLS information in the GOT.  */
-typedef struct
-{
-  unsigned long int ti_module;
-  unsigned long int ti_offset;
-} tls_index;
-
-
-#ifdef SHARED
-
-extern unsigned long __tls_get_offset (unsigned long got_offset);
-
-# if IS_IN (rtld)
-
-#  include <shlib-compat.h>
-
-/* dl-tls.c declares __tls_get_addr as an exported symbol if it is not defined
-   as a macro.  It seems suitable to do that in the generic code because all
-   architectures other than s390 export __tls_get_addr.  The declaration causes
-   problems in s390 though, so we define __tls_get_addr here to avoid declaring
-   __tls_get_addr again.  */
-#  define __tls_get_addr __tls_get_addr
-
-extern void *__tls_get_addr (tls_index *ti) attribute_hidden;
-/* Make a temporary alias of __tls_get_addr to remove the hidden
-   attribute.  Then export __tls_get_addr as __tls_get_addr_internal
-   for use from libc.  We do not want to export __tls_get_addr, but we
-   do need to use it from libc when looking up the address of a TLS
-   variable. We don't use __tls_get_offset because it requires r12 to
-   be setup and that might not always be true. Either way it's more
-   optimal to use __tls_get_addr directly (that's what
-   __tls_get_offset does anyways).  */
-strong_alias (__tls_get_addr, __tls_get_addr_internal_tmp);
-versioned_symbol (ld, __tls_get_addr_internal_tmp,
-		  __tls_get_addr_internal, GLIBC_PRIVATE);
-
-/* The special thing about the s390 TLS ABI is that we do not have the
-   standard __tls_get_addr function but the __tls_get_offset function
-   which differs in two important aspects:
-   1) __tls_get_offset gets a got offset instead of a pointer to the
-      tls_index structure
-   2) __tls_get_offset returns the offset of the requested variable to
-      the thread descriptor instead of a pointer to the variable.
- */
-#  ifdef __s390x__
-__asm__("\n\
-	.text\n\
-	.globl __tls_get_offset\n\
-	.type __tls_get_offset, @function\n\
-	.align 4\n\
-__tls_get_offset:\n\
-	la	%r2,0(%r2,%r12)\n\
-	jg	__tls_get_addr\n\
-");
-#  elif defined __s390__
-__asm__("\n\
-	.text\n\
-	.globl __tls_get_offset\n\
-	.type __tls_get_offset, @function\n\
-	.align 4\n\
-__tls_get_offset:\n\
-	basr	%r3,0\n\
-0:	la	%r2,0(%r2,%r12)\n\
-	l	%r4,1f-0b(%r3)\n\
-	b	0(%r4,%r3)\n\
-1:	.long	__tls_get_addr - 0b\n\
-");
-#  endif
-# else /* IS_IN (rtld) */
-extern void *__tls_get_addr_internal (tls_index *ti);
-# endif /* !IS_IN (rtld) */
-
-# define GET_ADDR_OFFSET \
-  (ti->ti_offset - (unsigned long) __builtin_thread_pointer ())
-
-/* Use the privately exported __tls_get_addr_internal instead of
-   __tls_get_offset in order to avoid the __tls_get_offset special
-   linkage requiring the GOT pointer to be set up in r12.  The
-   compiler will take care of setting up r12 only if itself issued the
-   __tls_get_offset call.  */
-# define __TLS_GET_ADDR(__ti)					\
-  ({ __tls_get_addr_internal (__ti)				\
-      + (unsigned long) __builtin_thread_pointer (); })
-
-#endif