aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm64/include/asm/spinlock_types.h
diff options
context:
space:
mode:
authorWill Deacon <will.deacon@arm.com>2013-10-09 15:54:26 +0100
committerCatalin Marinas <catalin.marinas@arm.com>2013-10-24 15:46:33 +0100
commit52ea2a560a9dba57fe5fd6b4726b1089751accf2 (patch)
tree5cd58ed43397b9f52fa3d63a11bc272f3a834967 /arch/arm64/include/asm/spinlock_types.h
parentarm64: Fix memory layout typo (diff)
downloadlinux-dev-52ea2a560a9dba57fe5fd6b4726b1089751accf2.tar.xz
linux-dev-52ea2a560a9dba57fe5fd6b4726b1089751accf2.zip
arm64: locks: introduce ticket-based spinlock implementation
This patch introduces a ticket lock implementation for arm64, along the same lines as the implementation for arch/arm/. Reviewed-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Diffstat (limited to 'arch/arm64/include/asm/spinlock_types.h')
-rw-r--r--arch/arm64/include/asm/spinlock_types.h10
1 files changed, 5 insertions, 5 deletions
diff --git a/arch/arm64/include/asm/spinlock_types.h b/arch/arm64/include/asm/spinlock_types.h
index 9a494346efed..87692750ed94 100644
--- a/arch/arm64/include/asm/spinlock_types.h
+++ b/arch/arm64/include/asm/spinlock_types.h
@@ -20,14 +20,14 @@
# error "please don't include this file directly"
#endif
-/* We only require natural alignment for exclusive accesses. */
-#define __lock_aligned
+#define TICKET_SHIFT 16
typedef struct {
- volatile unsigned int lock;
-} arch_spinlock_t;
+ u16 owner;
+ u16 next;
+} __aligned(4) arch_spinlock_t;
-#define __ARCH_SPIN_LOCK_UNLOCKED { 0 }
+#define __ARCH_SPIN_LOCK_UNLOCKED { 0 , 0 }
typedef struct {
volatile unsigned int lock;