From daecc9a410a6f23d80daf8ce3afd280fea329e63 Mon Sep 17 00:00:00 2001 From: Markos Chandras Date: Thu, 18 Nov 2010 14:58:01 +0000 Subject: metag: Add NPTL support Signed-off-by: Markos Chandras Signed-off-by: Bernhard Reutner-Fischer --- libpthread/nptl/sysdeps/metag/libc-tls.c | 33 ++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 libpthread/nptl/sysdeps/metag/libc-tls.c (limited to 'libpthread/nptl/sysdeps/metag/libc-tls.c') diff --git a/libpthread/nptl/sysdeps/metag/libc-tls.c b/libpthread/nptl/sysdeps/metag/libc-tls.c new file mode 100644 index 000000000..abc7c58db --- /dev/null +++ b/libpthread/nptl/sysdeps/metag/libc-tls.c @@ -0,0 +1,33 @@ +/* + * Thread-local storage handling in statically linked binaries. Meta version. + * Copyright (C) 2009 Free Software Foundation, Inc. + * + * Based on GNU C Library (file: libc/sysdeps/sh/libc-tls.c) + * + * Copyright (C) 2010 STMicroelectronics Ltd. + * Copyright (C) 2013 Imagination Technologies Ltd. + * + * Author: Filippo Arcidiacono + * + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball. + * + */ + +#include +#include + +#if defined (USE_TLS) && (USE_TLS) + +/* On Meta, linker optimizations are not required, so __tls_get_addr + can be called even in statically linked binaries. In this case module + must be always 1 and PT_TLS segment exist in the binary, otherwise it + would not link. */ + +void * +__tls_get_addr (tls_index *ti) +{ + dtv_t *dtv = THREAD_DTV (); + return (char *) dtv[1].pointer.val + ti->ti_offset; +} + +#endif -- cgit v1.2.3