diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/ldso/arm/tlsdesc.S | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/ldso/arm/tlsdesc.S b/src/ldso/arm/tlsdesc.S index f3d67fce..b81f3111 100644 --- a/src/ldso/arm/tlsdesc.S +++ b/src/ldso/arm/tlsdesc.S @@ -19,6 +19,10 @@ __tlsdesc_dynamic: ldr r2,[r1,#4] // r2 = offset ldr r1,[r1] // r1 = modid +#if ((__ARM_ARCH_6K__ || __ARM_ARCH_6KZ__ || __ARM_ARCH_6ZK__) && !__thumb__) \ + || __ARM_ARCH_7A__ || __ARM_ARCH_7R__ || __ARM_ARCH >= 7 + mrc p15,0,r0,c13,c0,3 +#else ldr r0,1f add r0,r0,pc ldr r0,[r0] @@ -29,6 +33,7 @@ __tlsdesc_dynamic: mov lr,pc bx r0 #endif +#endif ldr r3,[r0,#-4] // r3 = dtv ldr ip,[r3] // ip = dtv slot count cmp r1,ip @@ -58,5 +63,9 @@ __tlsdesc_dynamic: sub r0,r0,r1 // r0 = retval-tp b 4b +#if ((__ARM_ARCH_6K__ || __ARM_ARCH_6KZ__ || __ARM_ARCH_6ZK__) && !__thumb__) \ + || __ARM_ARCH_7A__ || __ARM_ARCH_7R__ || __ARM_ARCH >= 7 +#else .align 2 1: .word __a_gettp_ptr - 2b +#endif |