1 /* $Id: atomic.S,v 1.4 2001/11/18 00:12:56 davem Exp $
2 * atomic.S: These things are too big to do inline.
4 * Copyright (C) 1999 David S. Miller (davem@redhat.com)
12 .globl atomic_impl_begin, atomic_impl_end
16 __atomic_add: /* %o0 = increment, %o1 = atomic_ptr */
21 bne,pn %icc, __atomic_add
22 membar #StoreLoad | #StoreStore
27 __atomic_sub: /* %o0 = increment, %o1 = atomic_ptr */
32 bne,pn %icc, __atomic_sub
33 membar #StoreLoad | #StoreStore
38 __atomic64_add: /* %o0 = increment, %o1 = atomic_ptr */
43 bne,pn %xcc, __atomic64_add
44 membar #StoreLoad | #StoreStore
49 __atomic64_sub: /* %o0 = increment, %o1 = atomic_ptr */
54 bne,pn %xcc, __atomic64_sub
55 membar #StoreLoad | #StoreStore