< prev index next >
src/os_cpu/solaris_sparc/vm/solaris_sparc.il
Print this page
rev 13323 : imported patch Atomic_refactoring
rev 13327 : [mq]: SpecializableAtomic
*** 30,40 ****
mov %g7, %o0
.nonvolatile
.end
! // Support for jint Atomic::xchg(jint exchange_value, volatile jint* dest).
//
// Arguments:
// exchange_value: O0
// dest: O1
//
--- 30,40 ----
mov %g7, %o0
.nonvolatile
.end
! // Support for int32_t GeneralizedAtomic::specialized_xchg(int32_t exchange_value, volatile int32_t* dest).
//
// Arguments:
// exchange_value: O0
// dest: O1
//
*** 46,56 ****
swap [%o1],%o0
.nonvolatile
.end
! // Support for intptr_t Atomic::xchg_ptr(intptr_t exchange_value, volatile intptr_t * dest).
//
// 64-bit
//
// Arguments:
// exchange_value: O0
--- 46,56 ----
swap [%o1],%o0
.nonvolatile
.end
! // Support for int64_t GeneralizedAtomic::specialized_xchg(int64_t exchange_value, volatile int64_t * dest).
//
// 64-bit
//
// Arguments:
// exchange_value: O0
*** 71,83 ****
mov %o2, %o0
.nonvolatile
.end
! // Support for jint Atomic::cmpxchg(jint exchange_value,
! // volatile jint* dest,
! // jint compare_value)
//
// Arguments:
// exchange_value: O0
// dest: O1
// compare_value: O2
--- 71,83 ----
mov %o2, %o0
.nonvolatile
.end
! // Support for int32_t GeneralizedAtomic::specialized_cmpxchg(int32_t exchange_value,
! // volatile int32_t* dest,
! // int32_t compare_value)
//
// Arguments:
// exchange_value: O0
// dest: O1
// compare_value: O2
*** 90,102 ****
cas [%o1], %o2, %o0
.nonvolatile
.end
! // Support for intptr_t Atomic::cmpxchg_ptr(intptr_t exchange_value,
! // volatile intptr_t* dest,
! // intptr_t compare_value)
//
// 64-bit
//
// Arguments:
// exchange_value: O0
--- 90,102 ----
cas [%o1], %o2, %o0
.nonvolatile
.end
! // Support for int64_t GeneralizedAtomic::specialized_cmpxchg(int64_t exchange_value,
! // volatile int64_t* dest,
! // int64_t compare_value)
//
// 64-bit
//
// Arguments:
// exchange_value: O0
*** 111,166 ****
casx [%o1], %o2, %o0
.nonvolatile
.end
! // Support for jlong Atomic::cmpxchg(jlong exchange_value,
! // volatile jlong* dest,
! // jlong compare_value)
! //
! // 32-bit calling conventions
! //
! // Arguments:
! // exchange_value: O1:O0
! // dest: O2
! // compare_value: O4:O3
! //
! // Results:
! // O1:O0: the value previously stored in dest
!
! .inline _Atomic_casl, 3
! .volatile
! sllx %o0, 32, %o0
! srl %o1, 0, %o1
! or %o0,%o1,%o0
! sllx %o3, 32, %o3
! srl %o4, 0, %o4
! or %o3,%o4,%o3
! casx [%o2], %o3, %o0
! srl %o0, 0, %o1
! srlx %o0, 32, %o0
! .nonvolatile
! .end
!
! // Support for jlong Atomic::load and Atomic::store on v9.
! //
! // void _Atomic_move_long_v9(volatile jlong* src, volatile jlong* dst)
! //
! // Arguments:
! // src: O0
! // dest: O1
! //
! // Overwrites O2
!
! .inline _Atomic_move_long_v9,2
! .volatile
! ldx [%o0], %o2
! stx %o2, [%o1]
! .nonvolatile
! .end
!
! // Support for jint Atomic::add(jint add_value, volatile jint* dest).
//
// Arguments:
// add_value: O0 (e.g., +1 or -1)
// dest: O1
//
--- 111,121 ----
casx [%o1], %o2, %o0
.nonvolatile
.end
! // Support for int32_t GeneralizedAtomic::specialized_add(int32_t add_value, volatile int32_t* dest).
//
// Arguments:
// add_value: O0 (e.g., +1 or -1)
// dest: O1
//
*** 181,191 ****
add %o0, %o2, %o0
.nonvolatile
.end
! // Support for intptr_t Atomic::add_ptr(intptr_t add_value, volatile intptr_t* dest)
//
// 64-bit
//
// Arguments:
// add_value: O0 (e.g., +1 or -1)
--- 136,146 ----
add %o0, %o2, %o0
.nonvolatile
.end
! // Support for int64_t GeneralizedAtomic::specialized_add(int64_t add_value, volatile int64_t* dest)
//
// 64-bit
//
// Arguments:
// add_value: O0 (e.g., +1 or -1)
< prev index next >