Hello, I use gcc-linaro-aarch64-linux-gnu-4.8 to compile my C code with thread-local variables.
Here is an example of my C code: __thread u32 threadedVar; void test(void) { threadedVar = 0xDEAD; } gcc produces the following assembly to access my threaded variable: threadedVar = 0xDEAD; 72b0: d00000c0 adrp x0, 21000 72b4: f945ac00 ldr x0, [x0,#2904] 72b8: d503201f nop 72bc: d503201f nop 72c0: d53bd041 mrs x1, tpidr_el0 72c4: 529bd5a2 movz w2, #0xdead 72c8: b8206822 str w2, [x1,x0] This assembly fits dynamically linked code, but in my case I have statically linked application that does not load any additional modules. Since I have exactly one TLS block containing all thread-local variable gcc should be able to calculate the offset at link time. Can I make gcc to produce the following assembly ? threadedVar = 0xDEAD; 72c0: d53bd041 mrs x1, tpidr_el0 72c4: 529bd5a2 movz w2, #0xdead 72c8: b8206822 str w2, [x1,#offset_to_threadedVar] Thank you, Vitali
_______________________________________________ linaro-toolchain mailing list linaro-toolchain@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-toolchain