1.syntax unified 2 3.text 4.global __tlsdesc_static 5.hidden __tlsdesc_static 6.type __tlsdesc_static,%function 7__tlsdesc_static: 8 ldr r0,[r0] 9 bx lr 10 11.hidden __tls_get_new 12 13.global __tlsdesc_dynamic 14.hidden __tlsdesc_dynamic 15.type __tlsdesc_dynamic,%function 16__tlsdesc_dynamic: 17 push {r2,r3,ip,lr} 18 ldr r1,[r0] 19 ldr r2,[r1,#4] // r2 = offset 20 ldr r1,[r1] // r1 = modid 21 22#if ((__ARM_ARCH_6K__ || __ARM_ARCH_6KZ__ || __ARM_ARCH_6ZK__) && !__thumb__) \ 23 || __ARM_ARCH_7A__ || __ARM_ARCH_7R__ || __ARM_ARCH >= 7 24 mrc p15,0,r0,c13,c0,3 25#else 26 ldr r0,1f 27 add r0,r0,pc 28 ldr r0,[r0] 292: 30#if __ARM_ARCH >= 5 31 blx r0 // r0 = tp 32#else 33 mov lr,pc 34 bx r0 35#endif 36#endif 37 ldr r3,[r0,#-4] // r3 = dtv 38 ldr ip,[r3,r1,LSL #2] 39 sub r0,ip,r0 40 add r0,r0,r2 // r0 = r3[r1]-r0+r2 41#if __ARM_ARCH >= 5 42 pop {r2,r3,ip,pc} 43#else 44 pop {r2,r3,ip,lr} 45 bx lr 46#endif 47 48#if ((__ARM_ARCH_6K__ || __ARM_ARCH_6KZ__ || __ARM_ARCH_6ZK__) && !__thumb__) \ 49 || __ARM_ARCH_7A__ || __ARM_ARCH_7R__ || __ARM_ARCH >= 7 50#else 51 .align 2 521: .word __a_gettp_ptr - 2b 53#endif 54