From 5478c44ceb136a4dc7166bd287684cdbef6ca9ce Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Mon, 25 Jul 2016 19:13:20 +0200 Subject: test: reorganize tls macros in separate architecture files To be more consistent separate all TLS macros in separate files and remove obsolete macros for not supported architectures. Reviewed-by: Max Filippov --- test/tls/tls-macros-arc.h | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 test/tls/tls-macros-arc.h (limited to 'test/tls/tls-macros-arc.h') diff --git a/test/tls/tls-macros-arc.h b/test/tls/tls-macros-arc.h new file mode 100644 index 000000000..4b2d6f8ad --- /dev/null +++ b/test/tls/tls-macros-arc.h @@ -0,0 +1,28 @@ +/* For now */ +#define TLS_LD(x) TLS_IE(x) + +#define TLS_GD(x) \ + ({ int *__result; \ + __asm__ ("add r0, pcl, @" #x "@tlsgd \n" \ + ".tls_gd_ld " #x "`bl __tls_get_addr@plt \n" \ + "mov %0, r0 \n" \ + : "=&r" (__result) \ + ::"r0","r1","r2","r3","r4","r5","r6","r7", \ + "r8","r9","r10","r11","r12"); \ + __result; }) + +#define TLS_LE(x) \ + ({ int *__result; \ + void *tp = __builtin_thread_pointer(); \ + __asm__ ("add %0, %1, @" #x "@tpoff \n" \ + : "=r" (__result) : "r"(tp)); \ + __result; }) + +#define TLS_IE(x) \ + ({ int *__result; \ + void *tp = __builtin_thread_pointer(); \ + __asm__ ("ld %0, [pcl, @" #x "@tlsie] \n" \ + "add %0, %1, %0 \n" \ + : "=&r" (__result) : "r" (tp)); \ + __result; }) + -- cgit v1.2.3