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