diff options
Diffstat (limited to 'arch/metag/include/asm/global_lock.h')
-rw-r--r-- | arch/metag/include/asm/global_lock.h | 101 |
1 files changed, 0 insertions, 101 deletions
diff --git a/arch/metag/include/asm/global_lock.h b/arch/metag/include/asm/global_lock.h deleted file mode 100644 index 4d3da96..0000000 --- a/arch/metag/include/asm/global_lock.h +++ /dev/null @@ -1,101 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -#ifndef __ASM_METAG_GLOBAL_LOCK_H -#define __ASM_METAG_GLOBAL_LOCK_H - -#include <asm/metag_mem.h> - -/** - * __global_lock1() - Acquire global voluntary lock (LOCK1). - * @flags: Variable to store flags into. - * - * Acquires the Meta global voluntary lock (LOCK1), also taking care to disable - * all triggers so we cannot be interrupted, and to enforce a compiler barrier - * so that the compiler cannot reorder memory accesses across the lock. - * - * No other hardware thread will be able to acquire the voluntary or exclusive - * locks until the voluntary lock is released with @__global_unlock1, but they - * may continue to execute as long as they aren't trying to acquire either of - * the locks. - */ -#define __global_lock1(flags) do { \ - unsigned int __trval; \ - asm volatile("MOV %0,#0\n\t" \ - "SWAP %0,TXMASKI\n\t" \ - "LOCK1" \ - : "=r" (__trval) \ - : \ - : "memory"); \ - (flags) = __trval; \ -} while (0) - -/** - * __global_unlock1() - Release global voluntary lock (LOCK1). - * @flags: Variable to restore flags from. - * - * Releases the Meta global voluntary lock (LOCK1) acquired with - * @__global_lock1, also taking care to re-enable triggers, and to enforce a - * compiler barrier so that the compiler cannot reorder memory accesses across - * the unlock. - * - * This immediately allows another hardware thread to acquire the voluntary or - * exclusive locks. - */ -#define __global_unlock1(flags) do { \ - unsigned int __trval = (flags); \ - asm volatile("LOCK0\n\t" \ - "MOV TXMASKI,%0" \ - : \ - : "r" (__trval) \ - : "memory"); \ -} while (0) - -/** - * __global_lock2() - Acquire global exclusive lock (LOCK2). - * @flags: Variable to store flags into. - * - * Acquires the Meta global voluntary lock and global exclusive lock (LOCK2), - * also taking care to disable all triggers so we cannot be interrupted, to take - * the atomic lock (system event) and to enforce a compiler barrier so that the - * compiler cannot reorder memory accesses across the lock. - * - * No other hardware thread will be able to execute code until the locks are - * released with @__global_unlock2. - */ -#define __global_lock2(flags) do { \ - unsigned int __trval; \ - unsigned int __aloc_hi = LINSYSEVENT_WR_ATOMIC_LOCK & 0xFFFF0000; \ - asm volatile("MOV %0,#0\n\t" \ - "SWAP %0,TXMASKI\n\t" \ - "LOCK2\n\t" \ - "SETD [%1+#0x40],D1RtP" \ - : "=r&" (__trval) \ - : "u" (__aloc_hi) \ - : "memory"); \ - (flags) = __trval; \ -} while (0) - -/** - * __global_unlock2() - Release global exclusive lock (LOCK2). - * @flags: Variable to restore flags from. - * - * Releases the Meta global exclusive lock (LOCK2) and global voluntary lock - * acquired with @__global_lock2, also taking care to release the atomic lock - * (system event), re-enable triggers, and to enforce a compiler barrier so that - * the compiler cannot reorder memory accesses across the unlock. - * - * This immediately allows other hardware threads to continue executing and one - * of them to acquire locks. - */ -#define __global_unlock2(flags) do { \ - unsigned int __trval = (flags); \ - unsigned int __alock_hi = LINSYSEVENT_WR_ATOMIC_LOCK & 0xFFFF0000; \ - asm volatile("SETD [%1+#0x00],D1RtP\n\t" \ - "LOCK0\n\t" \ - "MOV TXMASKI,%0" \ - : \ - : "r" (__trval), \ - "u" (__alock_hi) \ - : "memory"); \ -} while (0) - -#endif /* __ASM_METAG_GLOBAL_LOCK_H */ |