root/arch/sh/include/asm/cmpxchg-cas.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. __cmpxchg_u32
  2. xchg_u32

   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 #ifndef __ASM_SH_CMPXCHG_CAS_H
   3 #define __ASM_SH_CMPXCHG_CAS_H
   4 
   5 static inline unsigned long
   6 __cmpxchg_u32(volatile u32 *m, unsigned long old, unsigned long new)
   7 {
   8         __asm__ __volatile__("cas.l %1,%0,@r0"
   9                 : "+r"(new)
  10                 : "r"(old), "z"(m)
  11                 : "t", "memory" );
  12         return new;
  13 }
  14 
  15 static inline unsigned long xchg_u32(volatile u32 *m, unsigned long val)
  16 {
  17         unsigned long old;
  18         do old = *m;
  19         while (__cmpxchg_u32(m, old, val) != old);
  20         return old;
  21 }
  22 
  23 #include <asm/cmpxchg-xchg.h>
  24 
  25 #endif /* __ASM_SH_CMPXCHG_CAS_H */

/* [<][>][^][v][top][bottom][index][help] */