diff options
Diffstat (limited to 'arch/metag/include/asm/cmpxchg_lnkget.h')
-rw-r--r-- | arch/metag/include/asm/cmpxchg_lnkget.h | 87 |
1 files changed, 0 insertions, 87 deletions
diff --git a/arch/metag/include/asm/cmpxchg_lnkget.h b/arch/metag/include/asm/cmpxchg_lnkget.h deleted file mode 100644 index c69be00..0000000 --- a/arch/metag/include/asm/cmpxchg_lnkget.h +++ /dev/null @@ -1,87 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -#ifndef __ASM_METAG_CMPXCHG_LNKGET_H -#define __ASM_METAG_CMPXCHG_LNKGET_H - -static inline unsigned long xchg_u32(volatile u32 *m, unsigned long val) -{ - int temp, old; - - smp_mb(); - - asm volatile ( - "1: LNKGETD %1, [%2]\n" - " LNKSETD [%2], %3\n" - " DEFR %0, TXSTAT\n" - " ANDT %0, %0, #HI(0x3f000000)\n" - " CMPT %0, #HI(0x02000000)\n" - " BNZ 1b\n" -#ifdef CONFIG_METAG_LNKGET_AROUND_CACHE - " DCACHE [%2], %0\n" -#endif - : "=&d" (temp), "=&d" (old) - : "da" (m), "da" (val) - : "cc" - ); - - smp_mb(); - - return old; -} - -static inline unsigned long xchg_u8(volatile u8 *m, unsigned long val) -{ - int temp, old; - - smp_mb(); - - asm volatile ( - "1: LNKGETD %1, [%2]\n" - " LNKSETD [%2], %3\n" - " DEFR %0, TXSTAT\n" - " ANDT %0, %0, #HI(0x3f000000)\n" - " CMPT %0, #HI(0x02000000)\n" - " BNZ 1b\n" -#ifdef CONFIG_METAG_LNKGET_AROUND_CACHE - " DCACHE [%2], %0\n" -#endif - : "=&d" (temp), "=&d" (old) - : "da" (m), "da" (val & 0xff) - : "cc" - ); - - smp_mb(); - - return old; -} - -static inline unsigned long __cmpxchg_u32(volatile int *m, unsigned long old, - unsigned long new) -{ - __u32 retval, temp; - - smp_mb(); - - asm volatile ( - "1: LNKGETD %1, [%2]\n" - " CMP %1, %3\n" - " LNKSETDEQ [%2], %4\n" - " BNE 2f\n" - " DEFR %0, TXSTAT\n" - " ANDT %0, %0, #HI(0x3f000000)\n" - " CMPT %0, #HI(0x02000000)\n" - " BNZ 1b\n" -#ifdef CONFIG_METAG_LNKGET_AROUND_CACHE - " DCACHE [%2], %0\n" -#endif - "2:\n" - : "=&d" (temp), "=&d" (retval) - : "da" (m), "bd" (old), "da" (new) - : "cc" - ); - - smp_mb(); - - return retval; -} - -#endif /* __ASM_METAG_CMPXCHG_LNKGET_H */ |