linux/arch/sh/include/asm/cmpxchg-cas.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2#ifndef __ASM_SH_CMPXCHG_CAS_H
   3#define __ASM_SH_CMPXCHG_CAS_H
   4
   5static 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
  15static 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 */
  26