X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=test%2Ftls%2Ftls-macros.h;h=2787809f5b361b057b0a401d5acff035b63f77ff;hb=fd4a5861e29ddc4d77bb9a14d48f5c8969fb80a3;hp=0eaca657404c2a36a47bed9c27b924c55f2bf56f;hpb=3bb2a677d2fa6fc43fa150b19132c35341ae0160;p=uclinux-h8%2FuClibc.git diff --git a/test/tls/tls-macros.h b/test/tls/tls-macros.h index 0eaca6574..2787809f5 100644 --- a/test/tls/tls-macros.h +++ b/test/tls/tls-macros.h @@ -713,7 +713,7 @@ register void *__gp __asm__("$29"); #elif defined __powerpc__ && !defined __powerpc64__ -#include "config.h" +/*#include "config.h"*/ # define __TLS_CALL_CLOBBERS \ "0", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", \ @@ -855,6 +855,36 @@ register void *__gp __asm__("$29"); __result; \ }) +#elif defined __arc__ + +/* 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; }) + #elif !defined TLS_LE || !defined TLS_IE \ || !defined TLS_LD || !defined TLS_GD # error "No support for this architecture so far."