1
2
3
4
5
6
7
8
9
10
11
12
13
14
15#include <asm/spr-regs.h>
16
17 .text
18 .balign 4
19
20
21
22
23
24
25
26 .globl atomic64_inc_return
27 .type atomic64_inc_return,@function
28atomic64_inc_return:
29 or.p gr8,gr8,gr10
300:
31 orcc gr0,gr0,gr0,icc3
32 ckeq icc3,cc7
33 ldd.p @(gr10,gr0),gr8
34 orcr cc7,cc7,cc3
35 addicc gr9,
36 addxi gr8,
37 cstd.p gr8,@(gr10,gr0) ,cc3,
38 corcc gr29,gr29,gr0 ,cc3,
39 beq icc3,
40 bralr
41
42 .size atomic64_inc_return, .-atomic64_inc_return
43
44
45
46
47
48
49 .globl atomic64_dec_return
50 .type atomic64_dec_return,@function
51atomic64_dec_return:
52 or.p gr8,gr8,gr10
530:
54 orcc gr0,gr0,gr0,icc3
55 ckeq icc3,cc7
56 ldd.p @(gr10,gr0),gr8
57 orcr cc7,cc7,cc3
58 subicc gr9,
59 subxi gr8,
60 cstd.p gr8,@(gr10,gr0) ,cc3,
61 corcc gr29,gr29,gr0 ,cc3,
62 beq icc3,
63 bralr
64
65 .size atomic64_dec_return, .-atomic64_dec_return
66
67
68
69
70
71
72 .globl atomic64_add_return
73 .type atomic64_add_return,@function
74atomic64_add_return:
75 or.p gr8,gr8,gr4
76 or gr9,gr9,gr5
770:
78 orcc gr0,gr0,gr0,icc3
79 ckeq icc3,cc7
80 ldd.p @(gr10,gr0),gr8
81 orcr cc7,cc7,cc3
82 addcc gr9,gr5,gr9,icc0
83 addx gr8,gr4,gr8,icc0
84 cstd.p gr8,@(gr10,gr0) ,cc3,
85 corcc gr29,gr29,gr0 ,cc3,
86 beq icc3,
87 bralr
88
89 .size atomic64_add_return, .-atomic64_add_return
90
91
92
93
94
95
96 .globl atomic64_sub_return
97 .type atomic64_sub_return,@function
98atomic64_sub_return:
99 or.p gr8,gr8,gr4
100 or gr9,gr9,gr5
1010:
102 orcc gr0,gr0,gr0,icc3
103 ckeq icc3,cc7
104 ldd.p @(gr10,gr0),gr8
105 orcr cc7,cc7,cc3
106 subcc gr9,gr5,gr9,icc0
107 subx gr8,gr4,gr8,icc0
108 cstd.p gr8,@(gr10,gr0) ,cc3,
109 corcc gr29,gr29,gr0 ,cc3,
110 beq icc3,
111 bralr
112
113 .size atomic64_sub_return, .-atomic64_sub_return
114
115
116
117
118
119
120 .globl __xchg_64
121 .type __xchg_64,@function
122__xchg_64:
123 or.p gr8,gr8,gr4
124 or gr9,gr9,gr5
1250:
126 orcc gr0,gr0,gr0,icc3
127 ckeq icc3,cc7
128 ldd.p @(gr10,gr0),gr8
129 orcr cc7,cc7,cc3
130 cstd.p gr4,@(gr10,gr0) ,cc3,
131 corcc gr29,gr29,gr0 ,cc3,
132 beq icc3,
133 bralr
134
135 .size __xchg_64, .-__xchg_64
136
137
138
139
140
141
142 .globl __cmpxchg_64
143 .type __cmpxchg_64,@function
144__cmpxchg_64:
145 or.p gr8,gr8,gr4
146 or gr9,gr9,gr5
1470:
148 orcc gr0,gr0,gr0,icc3
149 ckeq icc3,cc7
150 ldd.p @(gr12,gr0),gr8
151 orcr cc7,cc7,cc3
152 subcc gr8,gr4,gr0,icc0
153 subcc.p gr9,gr5,gr0,icc1
154 bnelr icc0,
155 bnelr icc1,
156 cstd.p gr10,@(gr12,gr0) ,cc3,
157 corcc gr29,gr29,gr0 ,cc3,
158 beq icc3,
159 bralr
160
161 .size __cmpxchg_64, .-__cmpxchg_64
162
163