122 movl 16(%esp), %edi // dest 123 movl 8(%esp), %ebx // exchange_value (low) 124 movl 12(%esp), %ecx // exchange_high (high) 125 cmp $0, 28(%esp) // MP test 126 jne 1f 127 cmpxchg8b (%edi) 128 jmp 2f 129 1: lock 130 cmpxchg8b (%edi) 131 2: popl %edi 132 popl %ebx 133 .end 134 135 // Support for jlong Atomic::load and Atomic::store. 136 // void _Atomic_move_long(volatile jlong* src, volatile jlong* dst) 137 .inline _Atomic_move_long,2 138 movl 0(%esp), %eax // src 139 fildll (%eax) 140 movl 4(%esp), %eax // dest 141 fistpll (%eax) 142 .end 143 144 // Support for OrderAccess::acquire() 145 .inline _OrderAccess_acquire,0 146 movl 0(%esp), %eax 147 .end 148 149 // Support for OrderAccess::fence() 150 .inline _OrderAccess_fence,0 151 lock 152 addl $0, (%esp) 153 .end 154 155 // Support for u2 Bytes::swap_u2(u2 x) 156 .inline _raw_swap_u2,1 157 movl 0(%esp), %eax 158 xchgb %al, %ah 159 .end 160 161 // Support for u4 Bytes::swap_u4(u4 x) 162 .inline _raw_swap_u4,1 163 movl 0(%esp), %eax 164 bswap %eax 165 .end 166 167 // Support for u8 Bytes::swap_u8_base(u4 x, u4 y) 168 .inline _raw_swap_u8,2 169 movl 4(%esp), %eax // y 170 movl 0(%esp), %edx // x 171 bswap %eax 172 bswap %edx | 122 movl 16(%esp), %edi // dest 123 movl 8(%esp), %ebx // exchange_value (low) 124 movl 12(%esp), %ecx // exchange_high (high) 125 cmp $0, 28(%esp) // MP test 126 jne 1f 127 cmpxchg8b (%edi) 128 jmp 2f 129 1: lock 130 cmpxchg8b (%edi) 131 2: popl %edi 132 popl %ebx 133 .end 134 135 // Support for jlong Atomic::load and Atomic::store. 136 // void _Atomic_move_long(volatile jlong* src, volatile jlong* dst) 137 .inline _Atomic_move_long,2 138 movl 0(%esp), %eax // src 139 fildll (%eax) 140 movl 4(%esp), %eax // dest 141 fistpll (%eax) 142 .end 143 144 // Support for u2 Bytes::swap_u2(u2 x) 145 .inline _raw_swap_u2,1 146 movl 0(%esp), %eax 147 xchgb %al, %ah 148 .end 149 150 // Support for u4 Bytes::swap_u4(u4 x) 151 .inline _raw_swap_u4,1 152 movl 0(%esp), %eax 153 bswap %eax 154 .end 155 156 // Support for u8 Bytes::swap_u8_base(u4 x, u4 y) 157 .inline _raw_swap_u8,2 158 movl 4(%esp), %eax // y 159 movl 0(%esp), %edx // x 160 bswap %eax 161 bswap %edx |