#include "spinlock.h" #include "kernel.h" #include "asm_x86.h" static volatile uint32_t spinlocks[NUMBER_SPINLOCKS]; void spinlock_spin(uint32_t i) { uint32_t *addr=spinlocks+i; while(x86_xchg(addr,1)); } void spinlock_release(uint32_t i) { uint32_t *addr=spinlocks+i; asm("movb $0,%0"::"m"(*addr)); }