diff options
| -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 | 
