00001 /* 00002 * @(#)x86.uslc 00003 * 00004 * UnixWare has threads in libthread, but OpenServer doesn't (yet). 00005 * 00006 * For cc/x86, 0 is clear, 1 is set. 00007 */ 00008 00009 #if defined(__USLC__) 00010 asm int 00011 _tsl_set(void *tsl) 00012 { 00013 %mem tsl 00014 movl tsl, %ecx 00015 movl $1, %eax 00016 lock 00017 xchgb (%ecx),%al 00018 xorl $1,%eax 00019 } 00020 #endif 00021 00022 #define MUTEX_SET(tsl) _tsl_set(tsl) 00023 #define MUTEX_UNSET(tsl) (*(tsl) = 0) 00024 #define MUTEX_INIT(tsl) MUTEX_UNSET(tsl)