File: atomic-powerpc64-osx.s

package info (click to toggle)
openmpi 1.6.5-9.1%2Bdeb8u1
  • links: PTS, VCS
  • area: main
  • in suites: jessie
  • size: 91,628 kB
  • ctags: 44,305
  • sloc: ansic: 408,966; cpp: 44,454; sh: 27,828; makefile: 10,486; asm: 3,882; python: 1,239; lex: 805; perl: 549; csh: 253; fortran: 232; f90: 126; tcl: 12
file content (156 lines) | stat: -rw-r--r-- 2,502 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
	.text

	.align 2
	.globl _opal_atomic_mb
_opal_atomic_mb:
	sync
	blr


	.globl _opal_atomic_rmb
_opal_atomic_rmb:
	lwsync
	blr


	.globl _opal_atomic_wmb
_opal_atomic_wmb:
	eieio
	blr


	.globl _opal_atomic_cmpset_32
_opal_atomic_cmpset_32:
	L1: lwarx   r0, 0, r3  
	   cmpw    0, r0, r4  
	   bne-    L2         
	   stwcx.  r5, 0, r3  
	   bne-    L1
	L2:
	cmpw cr7,r0,r4
	mfcr r3
	rlwinm r3,r3,31,1
	blr
	

	.globl _opal_atomic_cmpset_acq_32
_opal_atomic_cmpset_acq_32:
	mflr r0
	std r29,-24(r1)
	std r0,16(r1)
	stdu r1,-144(r1)
	bl _opal_atomic_cmpset_32
	mr r29,r3
	bl _opal_atomic_rmb
	mr r3,r29
	addi r1,r1,144
	ld r0,16(r1)
	mtlr r0
	ld r29,-24(r1)
	blr


	.globl _opal_atomic_cmpset_rel_32
_opal_atomic_cmpset_rel_32:
	mflr r0
	std r27,-40(r1)
	std r28,-32(r1)
	std r29,-24(r1)
	std r0,16(r1)
	stdu r1,-160(r1)
	mr r29,r3
	mr r28,r4
	mr r27,r5
	bl _opal_atomic_wmb
	mr r3,r29
	mr r4,r28
	mr r5,r27
	bl _opal_atomic_cmpset_32
	addi r1,r1,160
	ld r0,16(r1)
	mtlr r0
	ld r27,-40(r1)
	ld r28,-32(r1)
	ld r29,-24(r1)
	blr


	.globl _opal_atomic_cmpset_64
_opal_atomic_cmpset_64:
	L3: ldarx   r0, 0, r3  
	   cmpd    0, r0, r4  
	   bne-    L4
	   stdcx.  r5, 0, r3  
	   bne-    L3
	L4:
	xor r3,r4,r0
	subfic r5,r3,0
	adde r3,r5,r3
	blr


	.globl _opal_atomic_cmpset_acq_64
_opal_atomic_cmpset_acq_64:
        L7: ldarx   r0, 0, r3
           cmpd    0, r0, r4
           bne-    L8
           stdcx.  r5, 0, r3
           bne-    L7
        L8:
        lwsync
        xor r3,r4,r0
        subfic r5,r3,0
        adde r3,r5,r3
        blr


	.globl _opal_atomic_cmpset_rel_64
_opal_atomic_cmpset_rel_64:
        eieio
        L9: ldarx   r0, 0, r3
           cmpd    0, r0, r4
           bne-    L10
           stdcx.  r5, 0, r3
           bne-    L9
        L10:
        xor r3,r4,r0
        subfic r5,r3,0
        adde r3,r5,r3
        blr


	.globl _opal_atomic_add_32
_opal_atomic_add_32:
	L5: lwarx r0, 0, r3 
	     add  r0, r4, r0                
	     stwcx.   r0, 0, r3              
	     bne-  L5
	
	mr r3,r0
	blr


	.globl _opal_atomic_sub_32
_opal_atomic_sub_32:
	L6:   lwarx r0,0,r3
	     subf  r0,r4,r0                
	     stwcx.   r0,0,r3              
	     bne-  L6
	
	mr r3,r0
	blr

	.globl _opal_sys_timer_get_cycles
_opal_sys_timer_get_cycles:
	L11:
        mftbu r2
        rldicl r2,r2,0,32
        mftb r0
        rldicl r9,r0,0,32
        mftbu r0
        rldicl r0,r0,0,32
        cmpw cr7,r0,r2
        bne cr7,L11
        sldi r3,r0,32
        or r3,r3,r9
        blr