Update #4920. --- cpukit/libdl/rtl-tls.c | 73 ++++-------------------------------------- 1 file changed, 6 insertions(+), 67 deletions(-)
diff --git a/cpukit/libdl/rtl-tls.c b/cpukit/libdl/rtl-tls.c index 95ca47fe6a..7eb12831eb 100644 --- a/cpukit/libdl/rtl-tls.c +++ b/cpukit/libdl/rtl-tls.c @@ -13,6 +13,8 @@ /* * COPYRIGHT (c) 2023 Chris Johns <chr...@rtems.org> * + * Copyright (C) 2023 embedded brains GmbH & Co. KG + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -41,74 +43,11 @@ #include "rtl-tls.h" -/* - * The cpukit/score should provide a call for any arch that - * supports TLS. This code is here until that happens if it - * happens. - */ - -/* - * Pasted in from: - * - * https://android.googlesource.com/platform/bionic/+/refs/heads/main/libc/platform/bionic/tls.h - * - * Note, "#pragma once" has been removed - */ -/* - * Copyright (C) 2008 The Android Open Source Project - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED - * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ -#if defined(__aarch64__) -# define __get_tls() ({ void** __val; __asm__("mrs %0, tpidr_el0" : "=r"(__val)); __val; }) -#elif defined(__arm__) -# define __get_tls() ({ void** __val; __asm__("mrc p15, 0, %0, c13, c0, 3" : "=r"(__val)); __val; }) -#elif defined(__i386__) -# define __get_tls() ({ void** __val; __asm__("movl %%gs:0, %0" : "=r"(__val)); __val; }) -#elif defined(__riscv) -# define __get_tls() ({ void** __val; __asm__("mv %0, tp" : "=r"(__val)); __val; }) -#elif defined(__x86_64__) -# define __get_tls() ({ void** __val; __asm__("mov %%fs:0, %0" : "=r"(__val)); __val; }) -#elif defined(__sparc__) -#include <stdint.h> -# define __get_tls() ({ void** __val; register uintptr_t g7 __asm__( "g7" ); __val = (void**) g7; __val; }) -#elif defined(__powerpc__) -#include <stdint.h> -# define __get_tls() ({ void** __val; register uintptr_t tp __asm__( "2" ); __val = (void**) tp; __val; }) -#elif defined(__m68k__) || defined(__v850__) || defined(__microblaze__) -/* No TLS support */ -# define __get_tls() (void*) 0UL -#else -#error unsupported architecture -#endif - -#if defined(__get_tls) +#include <rtems/score/cpuimpl.h> +#include <rtems/score/percpu.h> +#include <rtems/score/thread.h> void* rtems_rtl_tls_get_base (void) { - return (void*) __get_tls(); + return _CPU_Get_TLS_thread_pointer (&_Thread_Get_executing()->Registers); } - -#endif -- 2.35.3 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel