OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [arch/] [sparc64/] [lib/] [atomic.S] - Rev 1765

Compare with Previous | Blame | View Log

/* $Id: atomic.S,v 1.1.1.1 2004-04-15 01:33:42 phoenix Exp $
 * atomic.S: These things are too big to do inline.
 *
 * Copyright (C) 1999 David S. Miller (davem@redhat.com)
 */

#include <asm/asi.h>

        .text
        .align  64

        .globl  atomic_impl_begin, atomic_impl_end

        .globl  __atomic_add
atomic_impl_begin:
__atomic_add: /* %o0 = increment, %o1 = atomic_ptr */
        lduw    [%o1], %g5
        add     %g5, %o0, %g7
        cas     [%o1], %g5, %g7
        cmp     %g5, %g7
        bne,pn  %icc, __atomic_add
         membar #StoreLoad | #StoreStore
        retl
         add    %g7, %o0, %o0

        .globl  __atomic_sub
__atomic_sub: /* %o0 = increment, %o1 = atomic_ptr */
        lduw    [%o1], %g5
        sub     %g5, %o0, %g7
        cas     [%o1], %g5, %g7
        cmp     %g5, %g7
        bne,pn  %icc, __atomic_sub
         membar #StoreLoad | #StoreStore
        retl
         sub    %g7, %o0, %o0
atomic_impl_end:

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.