11965aae3c98397aad957412413c07e97b1bd4e64H. Peter Anvin#ifndef _ASM_X86_SPINLOCK_TYPES_H
21965aae3c98397aad957412413c07e97b1bd4e64H. Peter Anvin#define _ASM_X86_SPINLOCK_TYPES_H
3fb1c8f93d869b34cacb8b8932e2b83d96a19d720Ingo Molnar
4fb1c8f93d869b34cacb8b8932e2b83d96a19d720Ingo Molnar#ifndef __LINUX_SPINLOCK_TYPES_H
5fb1c8f93d869b34cacb8b8932e2b83d96a19d720Ingo Molnar# error "please don't include this file directly"
6fb1c8f93d869b34cacb8b8932e2b83d96a19d720Ingo Molnar#endif
7fb1c8f93d869b34cacb8b8932e2b83d96a19d720Ingo Molnar
884eb950db13ca40a0572ce9957e14723500943d6Jeremy Fitzhardinge#include <linux/types.h>
984eb950db13ca40a0572ce9957e14723500943d6Jeremy Fitzhardinge
1084eb950db13ca40a0572ce9957e14723500943d6Jeremy Fitzhardinge#if (CONFIG_NR_CPUS < 256)
1184eb950db13ca40a0572ce9957e14723500943d6Jeremy Fitzhardingetypedef u8  __ticket_t;
12229855d6f3b40d01a903120c433d75e483a0b06dJeremy Fitzhardingetypedef u16 __ticketpair_t;
1384eb950db13ca40a0572ce9957e14723500943d6Jeremy Fitzhardinge#else
1484eb950db13ca40a0572ce9957e14723500943d6Jeremy Fitzhardingetypedef u16 __ticket_t;
15229855d6f3b40d01a903120c433d75e483a0b06dJeremy Fitzhardingetypedef u32 __ticketpair_t;
1684eb950db13ca40a0572ce9957e14723500943d6Jeremy Fitzhardinge#endif
1784eb950db13ca40a0572ce9957e14723500943d6Jeremy Fitzhardinge
1884eb950db13ca40a0572ce9957e14723500943d6Jeremy Fitzhardinge#define TICKET_SHIFT	(sizeof(__ticket_t) * 8)
1984eb950db13ca40a0572ce9957e14723500943d6Jeremy Fitzhardinge
20445c89514be242b1b0080056d50bdc1b72adeb5cThomas Gleixnertypedef struct arch_spinlock {
2184eb950db13ca40a0572ce9957e14723500943d6Jeremy Fitzhardinge	union {
22229855d6f3b40d01a903120c433d75e483a0b06dJeremy Fitzhardinge		__ticketpair_t head_tail;
2384eb950db13ca40a0572ce9957e14723500943d6Jeremy Fitzhardinge		struct __raw_tickets {
2484eb950db13ca40a0572ce9957e14723500943d6Jeremy Fitzhardinge			__ticket_t head, tail;
2584eb950db13ca40a0572ce9957e14723500943d6Jeremy Fitzhardinge		} tickets;
2684eb950db13ca40a0572ce9957e14723500943d6Jeremy Fitzhardinge	};
27445c89514be242b1b0080056d50bdc1b72adeb5cThomas Gleixner} arch_spinlock_t;
28fb1c8f93d869b34cacb8b8932e2b83d96a19d720Ingo Molnar
29229855d6f3b40d01a903120c433d75e483a0b06dJeremy Fitzhardinge#define __ARCH_SPIN_LOCK_UNLOCKED	{ { 0 } }
30fb1c8f93d869b34cacb8b8932e2b83d96a19d720Ingo Molnar
31a750036f35cda160ef77408ec92c3dc41f8feebbJan Beulich#include <asm/rwlock.h>
32fb1c8f93d869b34cacb8b8932e2b83d96a19d720Ingo Molnar
331965aae3c98397aad957412413c07e97b1bd4e64H. Peter Anvin#endif /* _ASM_X86_SPINLOCK_TYPES_H */
34