You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
19 lines
493 B
19 lines
493 B
3 years ago
|
/*
|
||
|
* $Id: ia64.gcc,v 1.2 2002/02/02 18:18:05 ghutchis Exp $
|
||
|
*
|
||
|
* For gcc/ia64, 0 is clear, 1 is set.
|
||
|
*/
|
||
|
#define MUTEX_SET(tsl) ({ \
|
||
|
register tsl_t *__l = (tsl); \
|
||
|
long __r; \
|
||
|
asm volatile("xchg1 %0=%1,%3" : "=r"(__r), "=m"(*__l) : "1"(*__l), "r"(1));\
|
||
|
__r ^ 1; \
|
||
|
})
|
||
|
|
||
|
/*
|
||
|
* Store through a "volatile" pointer so we get a store with "release"
|
||
|
* semantics.
|
||
|
*/
|
||
|
#define MUTEX_UNSET(tsl) (*(volatile unsigned char *)(tsl) = 0)
|
||
|
#define MUTEX_INIT(tsl) MUTEX_UNSET(tsl)
|