Ingo Molnar | fb1c8f9 | 2005-09-10 00:25:56 -0700 | [diff] [blame] | 1 | #ifndef _ASM_SPINLOCK_TYPES_H |
2 | #define _ASM_SPINLOCK_TYPES_H | ||||
3 | |||||
4 | #ifndef __LINUX_SPINLOCK_TYPES_H | ||||
5 | # error "please don't include this file directly" | ||||
6 | #endif | ||||
7 | |||||
David Daney | 500c2e1 | 2010-02-04 11:31:49 -0800 | [diff] [blame] | 8 | #include <linux/types.h> |
9 | |||||
10 | #include <asm/byteorder.h> | ||||
11 | |||||
12 | typedef union { | ||||
Ralf Baechle | 2a31b03 | 2008-08-28 15:17:49 +0100 | [diff] [blame] | 13 | /* |
David Daney | 500c2e1 | 2010-02-04 11:31:49 -0800 | [diff] [blame] | 14 | * bits 0..15 : serving_now |
15 | * bits 16..31 : ticket | ||||
Ralf Baechle | 2a31b03 | 2008-08-28 15:17:49 +0100 | [diff] [blame] | 16 | */ |
David Daney | 500c2e1 | 2010-02-04 11:31:49 -0800 | [diff] [blame] | 17 | u32 lock; |
18 | struct { | ||||
19 | #ifdef __BIG_ENDIAN | ||||
20 | u16 ticket; | ||||
21 | u16 serving_now; | ||||
22 | #else | ||||
23 | u16 serving_now; | ||||
24 | u16 ticket; | ||||
25 | #endif | ||||
26 | } h; | ||||
Thomas Gleixner | 445c895 | 2009-12-02 19:49:50 +0100 | [diff] [blame] | 27 | } arch_spinlock_t; |
Ingo Molnar | fb1c8f9 | 2005-09-10 00:25:56 -0700 | [diff] [blame] | 28 | |
David Daney | 500c2e1 | 2010-02-04 11:31:49 -0800 | [diff] [blame] | 29 | #define __ARCH_SPIN_LOCK_UNLOCKED { .lock = 0 } |
Ingo Molnar | fb1c8f9 | 2005-09-10 00:25:56 -0700 | [diff] [blame] | 30 | |
31 | typedef struct { | ||||
32 | volatile unsigned int lock; | ||||
Thomas Gleixner | fb3a6bb | 2009-12-03 20:01:19 +0100 | [diff] [blame] | 33 | } arch_rwlock_t; |
Ingo Molnar | fb1c8f9 | 2005-09-10 00:25:56 -0700 | [diff] [blame] | 34 | |
Thomas Gleixner | fb3a6bb | 2009-12-03 20:01:19 +0100 | [diff] [blame] | 35 | #define __ARCH_RW_LOCK_UNLOCKED { 0 } |
Ingo Molnar | fb1c8f9 | 2005-09-10 00:25:56 -0700 | [diff] [blame] | 36 | |
37 | #endif |