From 16ebfa1656088fa00b9c4b25d86c65f8a376238d Mon Sep 17 00:00:00 2001 From: Alexander Kartashov Date: Mon, 10 Mar 2014 12:51:21 +0400 Subject: [PATCH] arm: parasite: implement arch_get_tls() in C This patch should simplify the routine interface change in the following patch. Signed-off-by: Alexander Kartashov Reviewed-by: Christopher Covington Signed-off-by: Pavel Emelyanov --- arch/arm/include/asm/parasite.h | 25 +++---------------------- 1 file changed, 3 insertions(+), 22 deletions(-) diff --git a/arch/arm/include/asm/parasite.h b/arch/arm/include/asm/parasite.h index 01c4d5899..4c4007fa6 100644 --- a/arch/arm/include/asm/parasite.h +++ b/arch/arm/include/asm/parasite.h @@ -1,28 +1,9 @@ #ifndef __ASM_PARASITE_H__ #define __ASM_PARASITE_H__ -static inline u32 arch_get_tls(void) { - u32 res; - - asm ( - "adr %%r1, 1f \n" - "ldr %%r1, [%%r1] \n" - "push { %%r7, %%lr } \n" - "blx %%r1 \n" - "pop { %%r7, %%lr } \n" - "mov %0, %%r0 \n" - "b 2f \n" - - "1: \n" - ".word 0xffff0fe0 \n" - - "2: \n" - :"=r"(res) - : - : "r0", "r1", "memory" - ); - - return res; +static inline u32 arch_get_tls(void) +{ + return ((u32 (*)())0xffff0fe0)(); } #endif