< prev index next >

src/os_cpu/solaris_x86/vm/solaris_x86_32.il

Print this page




 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
< prev index next >