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 
8 #include <linux/types.h>
9 
10 #include <asm/byteorder.h>
11 
12 typedef union {
13 	/*
14 	 * bits	 0..15 : serving_now
15 	 * bits 16..31 : ticket
16 	 */
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;
27 } arch_spinlock_t;
28 
29 #define __ARCH_SPIN_LOCK_UNLOCKED	{ .lock = 0 }
30 
31 typedef struct {
32 	volatile unsigned int lock;
33 } arch_rwlock_t;
34 
35 #define __ARCH_RW_LOCK_UNLOCKED		{ 0 }
36 
37 #endif
38