POK(kernelpart)
spinlock.h
Go to the documentation of this file.
1 /*
2  * POK header
3  *
4  * The following file is a part of the POK project. Any modification should
5  * made according to the POK licence. You CANNOT use this file or a part of
6  * this file is this part of a file for your own project
7  *
8  * For more information on the POK licence, please see our LICENCE FILE
9  *
10  * Please follow the coding guidelines described in doc/CODING_GUIDELINES
11  *
12  * Copyright (c) 2007-2009 POK team
13  *
14  * Created by julien on Thu Jan 15 23:34:13 2009
15  */
16 
17 
18 #ifndef __POK_SPINLOCK_H__
19 #define __POK_SPINLOCK_H__
20 
21 typedef unsigned int pok_spinlock_t;
22 
23 #define SPIN_UNLOCK(_spin_) \
24  (_spin_) = 0
25 
26 #define SPIN_LOCK(_spin_) \
27  do { \
28  unsigned int val; \
29  asm volatile ("\n" \
30  "1:\n\t" \
31  "lwarx %0,0,%1 \n\t" \
32  "cmpwi %0,0 \n\t" \
33  "bne 1b \n\t" \
34  "stwcx. %2,0,%1 \n\t" \
35  "bne 1b \n\t" \
36  : "=&r"(val) : "r" (&_spin_), "r"(1)); \
37  } while (0)
38 
39 #endif /* !__POK_SPINLOCK_H__ */