#define KERNEL_BASE 0xFFFFFFFF##80000000
#define BITS 64
+//#define INT_MAX 0x7FFFFFFF
+//#define UINT_MAX 0xFFFFFFFF
+
// === Core Types ===
typedef signed char Sint8;
typedef unsigned char Uint8;
typedef volatile int tSpinlock;
#define IS_LOCKED(lockptr) (!!(*(tSpinlock*)lockptr))
-#define LOCK(lockptr) do {int v=1;\
+#define _LOCK(lockptr,action) do {int v=1;\
while(v)\
__asm__ __volatile__("lock xchgl %0, (%2)":"=r"(v):"r"(1),"r"(lockptr));\
+ if(v) action;\
}while(0)
+#define TIGHTLOCK(lockptr) _LOCK(lockptr, __asm__ __volatile__ ("hlt"));
+#define LOCK(lockptr) _LOCK(lockptr, Threads_Yield());
#define RELEASE(lockptr) __asm__ __volatile__("lock andl $0, (%0)"::"r"(lockptr));
#define HALT() __asm__ __volatile__ ("hlt")