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

/*
* $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)