📄 qatomic64.s
字号:
.section ".text" .align 4 .type q_atomic_test_and_set_int,#function .global q_atomic_test_and_set_intq_atomic_test_and_set_int: cas [%o0],%o1,%o2 cmp %o1,%o2 clr %o0 retl move %icc,1,%o0 .size q_atomic_test_and_set_int,.-q_atomic_test_and_set_int .align 4 .type q_atomic_test_and_set_acquire_int,#function .global q_atomic_test_and_set_acquire_intq_atomic_test_and_set_acquire_int: cas [%o0],%o1,%o2 cmp %o1,%o2 clr %o0 membar #LoadLoad | #LoadStore retl move %icc,1,%o0 .size q_atomic_test_and_set_acquire_int,.-q_atomic_test_and_set_acquire_int .align 4 .type q_atomic_test_and_set_release_int,#function .global q_atomic_test_and_set_release_intq_atomic_test_and_set_release_int: membar #LoadStore | #StoreStore cas [%o0],%o1,%o2 cmp %o1,%o2 clr %o0 retl move %icc,1,%o0 .size q_atomic_test_and_set_release_int,.-q_atomic_test_and_set_release_int .align 4 .type q_atomic_test_and_set_ptr,#function .global q_atomic_test_and_set_ptrq_atomic_test_and_set_ptr: casx [%o0],%o1,%o2 cmp %o1,%o2 clr %o0 retl move %icc,1,%o0 .size q_atomic_test_and_set_ptr,.-q_atomic_test_and_set_ptr .align 4 .type q_atomic_increment,#function .global q_atomic_incrementq_atomic_increment:q_atomic_increment_retry: ld [%o0],%o3 add %o3,1,%o4 cas [%o0],%o3,%o4 cmp %o3,%o4 bne q_atomic_increment_retry nop cmp %o4,-1 clr %o0 retl movne %icc,1,%o0 .size q_atomic_increment,.-q_atomic_increment .align 4 .type q_atomic_decrement,#function .global q_atomic_decrementq_atomic_decrement:q_atomic_decrement_retry: ld [%o0],%o3 add %o3,-1,%o4 cas [%o0],%o3,%o4 cmp %o3,%o4 bne q_atomic_decrement_retry nop cmp %o4,1 clr %o0 retl movne %icc,1,%o0 .size q_atomic_decrement,.-q_atomic_decrement .align 4 .type q_atomic_set_int,#function .global q_atomic_set_intq_atomic_set_int:q_atomic_set_int_retry: ld [%o0],%o2 cas [%o0],%o2,%o1 cmp %o2,%o1 bne q_atomic_set_int_retry nop retl mov %o1,%o0 .size q_atomic_set_int,.-q_atomic_set_int .align 4 .type q_atomic_set_ptr,#function .global q_atomic_set_ptrq_atomic_set_ptr:q_atomic_set_ptr_retry: ldx [%o0],%o2 casx [%o0],%o2,%o1 cmp %o2,%o1 bne q_atomic_set_ptr_retry nop retl mov %o1,%o0 .size q_atomic_set_ptr,.-q_atomic_set_ptr .align 4 .type q_atomic_fetch_and_add_int,#function .global q_atomic_fetch_and_add_intq_atomic_fetch_and_add_int:q_atomic_fetch_and_add_int_retry: ld [%o0],%o3 add %o3,%o1,%o4 cas [%o0],%o3,%o4 cmp %o3,%o4 bne q_atomic_fetch_and_add_int_retry nop retl mov %o3,%o0 .size q_atomic_fetch_and_add_int,.-q_atomic_fetch_and_add_int .align 4 .type q_atomic_fetch_and_add_acquire_int,#function .global q_atomic_fetch_and_add_acquire_intq_atomic_fetch_and_add_acquire_int:q_atomic_fetch_and_add_acquire_int_retry: ld [%o0],%o3 add %o3,%o1,%o4 cas [%o0],%o3,%o4 cmp %o3,%o4 bne q_atomic_fetch_and_add_acquire_int_retry nop membar #LoadLoad | #LoadStore retl mov %o3,%o0 .size q_atomic_fetch_and_add_acquire_int,.-q_atomic_fetch_and_add_acquire_int .align 4 .type q_atomic_fetch_and_add_release_int,#function .global q_atomic_fetch_and_add_release_intq_atomic_fetch_and_add_release_int:q_atomic_fetch_and_add_release_int_retry: membar #LoadStore | #StoreStore ld [%o0],%o3 add %o3,%o1,%o4 cas [%o0],%o3,%o4 cmp %o3,%o4 bne q_atomic_fetch_and_add_release_int_retry nop retl mov %o3,%o0 .size q_atomic_fetch_and_add_release_int,.-q_atomic_fetch_and_add_release_int
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -