< prev index next >

src/os_cpu/solaris_x86/vm/solaris_x86_32.il

Print this page


   1 //
   2 // Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
   3 // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4 //
   5 // This code is free software; you can redistribute it and/or modify it
   6 // under the terms of the GNU General Public License version 2 only, as
   7 // published by the Free Software Foundation.
   8 //
   9 // This code is distributed in the hope that it will be useful, but WITHOUT
  10 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11 // FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12 // version 2 for more details (a copy is included in the LICENSE file that
  13 // accompanied this code).
  14 //
  15 // You should have received a copy of the GNU General Public License version
  16 // 2 along with this work; if not, write to the Free Software Foundation,
  17 // Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18 //
  19 // Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20 // or visit www.oracle.com if you need additional information or have any
  21 // questions.
  22 //  


 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
   1 //
   2 // Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
   3 // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4 //
   5 // This code is free software; you can redistribute it and/or modify it
   6 // under the terms of the GNU General Public License version 2 only, as
   7 // published by the Free Software Foundation.
   8 //
   9 // This code is distributed in the hope that it will be useful, but WITHOUT
  10 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11 // FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12 // version 2 for more details (a copy is included in the LICENSE file that
  13 // accompanied this code).
  14 //
  15 // You should have received a copy of the GNU General Public License version
  16 // 2 along with this work; if not, write to the Free Software Foundation,
  17 // Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18 //
  19 // Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20 // or visit www.oracle.com if you need additional information or have any
  21 // questions.
  22 //


 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 >