1
- /* $NetBSD: atomic_cas.S,v 1.10 2014/02/22 17:08:30 martin Exp $ */
1
+ /* $NetBSD: atomic_cas.S,v 1.13 2015/07/10 20:16:01 mlelstv Exp $ */
2
2
3
3
/*-
4
4
* Copyright (c) 2007, 2008 The NetBSD Foundation, Inc.
@@ -63,22 +63,20 @@ STRONG_ALIAS(_atomic_cas_ptr_ni,_atomic_cas_32)
63
63
64
64
ENTRY(__sync_bool_compare_and_swap_4)
65
65
movl 4 (%sp ), %a0
66
- movl 8 (%sp ), %d3
67
- movl %d3, %d2
66
+ movl 8 (%sp ), %d0
68
67
movl 12 (%sp ), %d1
69
- casl %d3, %d1, (%a0)
70
- /* %d3 now contains the old value */
71
- beq 1f
68
+ casl %d0, %d1, (%a0)
69
+ beqs 1f
72
70
clrl %d0 /* return false */
73
71
rts
74
- 1: movl #1, %d0 /* return success */
72
+ 1: movql #1, %d0 /* return success */
75
73
rts
76
74
END(__sync_bool_compare_and_swap_4)
77
75
78
76
ENTRY(_atomic_cas_16)
79
77
movl 4 (%sp ), %a0
80
- movw 8 (%sp ), %d0
81
- movw 10 (%sp ), %d1
78
+ movw 8 + 2 (%sp ), %d0 /* lower word */
79
+ movw 12 + 2 (%sp ), %d1 /* lower word */
82
80
casw %d0, %d1, (%a0)
83
81
/* %d0 now contains the old value */
84
82
rts
@@ -89,22 +87,21 @@ CRT_ALIAS(__sync_val_compare_and_swap_2,_atomic_cas_16)
89
87
90
88
ENTRY(__sync_bool_compare_and_swap_2)
91
89
movl 4 (%sp ), %a0
92
- movw 8 (%sp ), %d3
93
- movw %d3, %d2
94
- movw 10 (%sp ), %d1
95
- casw %d3, %d1, (%a0)
96
- /* %d3 now contains the old value */
97
- beq 1f
90
+ movw 8 +2 (%sp ), %d0 /* lower word */
91
+ movw 12 +2 (%sp ), %d1 /* lower word */
92
+ casw %d0, %d1, (%a0)
93
+ /* %d0 now contains the old value */
94
+ beqs 1f
98
95
clrl %d0 /* return failure */
99
96
rts
100
- 1: movl #1, %d0 /* return success */
97
+ 1: movql #1, %d0 /* return success */
101
98
rts
102
99
END(__sync_bool_compare_and_swap_2)
103
100
104
101
ENTRY(_atomic_cas_8)
105
102
movl 4 (%sp ), %a0
106
- movb 8 (%sp ), %d0
107
- movb 9 (%sp ), %d1
103
+ movb 8 + 3 (%sp ), %d0 /* lower byte */
104
+ movb 12 + 3 (%sp ), %d1 /* lower byte */
108
105
casb %d0, %d1, (%a0)
109
106
/* %d0 now contains the old value */
110
107
rts
@@ -116,15 +113,14 @@ CRT_ALIAS(__sync_val_compare_and_swap_1,_atomic_cas_8)
116
113
117
114
ENTRY(__sync_bool_compare_and_swap_1)
118
115
movl 4 (%sp ), %a0
119
- movb 8 (%sp ), %d3
120
- movb %d3, %d2
121
- movb 9 (%sp ), %d1
122
- casb %d3, %d1, (%a0)
123
- /* %d3 now contains the old value */
124
- beq 1f
116
+ movb 8 +3 (%sp ), %d0 /* lower byte */
117
+ movb 12 +3 (%sp ), %d1 /* lower byte */
118
+ casb %d0, %d1, (%a0)
119
+ /* %d0 now contains the old value */
120
+ beqs 1f
125
121
clrl %d0 /* return failure */
126
122
rts
127
- 1: movl #1, %d0 /* return success */
123
+ 1: movql #1, %d0 /* return success */
128
124
rts
129
125
END(__sync_bool_compare_and_swap_1)
130
126
0 commit comments