xref: /aosp_15_r20/external/musl/src/thread/arm/atomics.s (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
1*c9945492SAndroid Build Coastguard Worker.syntax unified
2*c9945492SAndroid Build Coastguard Worker.text
3*c9945492SAndroid Build Coastguard Worker
4*c9945492SAndroid Build Coastguard Worker.global __a_barrier_dummy
5*c9945492SAndroid Build Coastguard Worker.hidden __a_barrier_dummy
6*c9945492SAndroid Build Coastguard Worker.type __a_barrier_dummy,%function
7*c9945492SAndroid Build Coastguard Worker__a_barrier_dummy:
8*c9945492SAndroid Build Coastguard Worker	bx lr
9*c9945492SAndroid Build Coastguard Worker
10*c9945492SAndroid Build Coastguard Worker.global __a_barrier_oldkuser
11*c9945492SAndroid Build Coastguard Worker.hidden __a_barrier_oldkuser
12*c9945492SAndroid Build Coastguard Worker.type __a_barrier_oldkuser,%function
13*c9945492SAndroid Build Coastguard Worker__a_barrier_oldkuser:
14*c9945492SAndroid Build Coastguard Worker	push {r0,r1,r2,r3,ip,lr}
15*c9945492SAndroid Build Coastguard Worker	mov r1,r0
16*c9945492SAndroid Build Coastguard Worker	mov r2,sp
17*c9945492SAndroid Build Coastguard Worker	ldr ip,=0xffff0fc0
18*c9945492SAndroid Build Coastguard Worker	bl 1f
19*c9945492SAndroid Build Coastguard Worker	pop {r0,r1,r2,r3,ip,lr}
20*c9945492SAndroid Build Coastguard Worker	bx lr
21*c9945492SAndroid Build Coastguard Worker1:	bx ip
22*c9945492SAndroid Build Coastguard Worker
23*c9945492SAndroid Build Coastguard Worker.global __a_barrier_v6
24*c9945492SAndroid Build Coastguard Worker.hidden __a_barrier_v6
25*c9945492SAndroid Build Coastguard Worker.type __a_barrier_v6,%function
26*c9945492SAndroid Build Coastguard Worker__a_barrier_v6:
27*c9945492SAndroid Build Coastguard Worker	.arch armv6t2
28*c9945492SAndroid Build Coastguard Worker	mcr p15,0,r0,c7,c10,5
29*c9945492SAndroid Build Coastguard Worker	bx lr
30*c9945492SAndroid Build Coastguard Worker
31*c9945492SAndroid Build Coastguard Worker.global __a_barrier_v7
32*c9945492SAndroid Build Coastguard Worker.hidden __a_barrier_v7
33*c9945492SAndroid Build Coastguard Worker.type __a_barrier_v7,%function
34*c9945492SAndroid Build Coastguard Worker__a_barrier_v7:
35*c9945492SAndroid Build Coastguard Worker	.arch armv7-a
36*c9945492SAndroid Build Coastguard Worker	dmb ish
37*c9945492SAndroid Build Coastguard Worker	bx lr
38*c9945492SAndroid Build Coastguard Worker
39*c9945492SAndroid Build Coastguard Worker.global __a_cas_dummy
40*c9945492SAndroid Build Coastguard Worker.hidden __a_cas_dummy
41*c9945492SAndroid Build Coastguard Worker.type __a_cas_dummy,%function
42*c9945492SAndroid Build Coastguard Worker__a_cas_dummy:
43*c9945492SAndroid Build Coastguard Worker	mov r3,r0
44*c9945492SAndroid Build Coastguard Worker	ldr r0,[r2]
45*c9945492SAndroid Build Coastguard Worker	subs r0,r3,r0
46*c9945492SAndroid Build Coastguard Worker	streq r1,[r2]
47*c9945492SAndroid Build Coastguard Worker	bx lr
48*c9945492SAndroid Build Coastguard Worker
49*c9945492SAndroid Build Coastguard Worker.global __a_cas_v6
50*c9945492SAndroid Build Coastguard Worker.hidden __a_cas_v6
51*c9945492SAndroid Build Coastguard Worker.type __a_cas_v6,%function
52*c9945492SAndroid Build Coastguard Worker__a_cas_v6:
53*c9945492SAndroid Build Coastguard Worker	.arch armv6t2
54*c9945492SAndroid Build Coastguard Worker	mov r3,r0
55*c9945492SAndroid Build Coastguard Worker	mcr p15,0,r0,c7,c10,5
56*c9945492SAndroid Build Coastguard Worker1:	ldrex r0,[r2]
57*c9945492SAndroid Build Coastguard Worker	subs r0,r3,r0
58*c9945492SAndroid Build Coastguard Worker	strexeq r0,r1,[r2]
59*c9945492SAndroid Build Coastguard Worker	teqeq r0,#1
60*c9945492SAndroid Build Coastguard Worker	beq 1b
61*c9945492SAndroid Build Coastguard Worker	mcr p15,0,r0,c7,c10,5
62*c9945492SAndroid Build Coastguard Worker	bx lr
63*c9945492SAndroid Build Coastguard Worker
64*c9945492SAndroid Build Coastguard Worker.global __a_cas_v7
65*c9945492SAndroid Build Coastguard Worker.hidden __a_cas_v7
66*c9945492SAndroid Build Coastguard Worker.type __a_cas_v7,%function
67*c9945492SAndroid Build Coastguard Worker__a_cas_v7:
68*c9945492SAndroid Build Coastguard Worker	.arch armv7-a
69*c9945492SAndroid Build Coastguard Worker	mov r3,r0
70*c9945492SAndroid Build Coastguard Worker	dmb ish
71*c9945492SAndroid Build Coastguard Worker1:	ldrex r0,[r2]
72*c9945492SAndroid Build Coastguard Worker	subs r0,r3,r0
73*c9945492SAndroid Build Coastguard Worker	strexeq r0,r1,[r2]
74*c9945492SAndroid Build Coastguard Worker	teqeq r0,#1
75*c9945492SAndroid Build Coastguard Worker	beq 1b
76*c9945492SAndroid Build Coastguard Worker	dmb ish
77*c9945492SAndroid Build Coastguard Worker	bx lr
78*c9945492SAndroid Build Coastguard Worker
79*c9945492SAndroid Build Coastguard Worker.global __a_gettp_cp15
80*c9945492SAndroid Build Coastguard Worker.hidden __a_gettp_cp15
81*c9945492SAndroid Build Coastguard Worker.type __a_gettp_cp15,%function
82*c9945492SAndroid Build Coastguard Worker__a_gettp_cp15:
83*c9945492SAndroid Build Coastguard Worker	mrc p15,0,r0,c13,c0,3
84*c9945492SAndroid Build Coastguard Worker	bx lr
85*c9945492SAndroid Build Coastguard Worker
86*c9945492SAndroid Build Coastguard Worker/* Tag this file with minimum ISA level so as not to affect linking. */
87*c9945492SAndroid Build Coastguard Worker.object_arch armv4t
88*c9945492SAndroid Build Coastguard Worker.eabi_attribute 6,2
89*c9945492SAndroid Build Coastguard Worker
90*c9945492SAndroid Build Coastguard Worker.data
91*c9945492SAndroid Build Coastguard Worker.align 2
92*c9945492SAndroid Build Coastguard Worker
93*c9945492SAndroid Build Coastguard Worker.global __a_barrier_ptr
94*c9945492SAndroid Build Coastguard Worker.hidden __a_barrier_ptr
95*c9945492SAndroid Build Coastguard Worker__a_barrier_ptr:
96*c9945492SAndroid Build Coastguard Worker	.word __a_barrier_dummy
97*c9945492SAndroid Build Coastguard Worker
98*c9945492SAndroid Build Coastguard Worker.global __a_cas_ptr
99*c9945492SAndroid Build Coastguard Worker.hidden __a_cas_ptr
100*c9945492SAndroid Build Coastguard Worker__a_cas_ptr:
101*c9945492SAndroid Build Coastguard Worker	.word __a_cas_dummy
102*c9945492SAndroid Build Coastguard Worker
103*c9945492SAndroid Build Coastguard Worker.global __a_gettp_ptr
104*c9945492SAndroid Build Coastguard Worker.hidden __a_gettp_ptr
105*c9945492SAndroid Build Coastguard Worker__a_gettp_ptr:
106*c9945492SAndroid Build Coastguard Worker	.word __a_gettp_cp15
107