#define BITS 32
// - Processor/Machine Specific Features
-#if ARCH == i386
-// Uses no advanced features
-# define USE_MP 0
-# define USE_PAE 0
-#elif ARCH == i586
-// All Enabled
-# define USE_MP 1
-# define USE_PAE 1
-#else
+#if ARCH != i386 && ARCH != i486 && ARCH != i586
# error "Unknown architecture '" #ARCH "'"
#endif
// === MACROS ===
typedef volatile int tSpinlock;
+#define IS_LOCKED(lockptr) (!!(*(tSpinlock*)lockptr))
#define LOCK(lockptr) do {int v=1;\
while(v)__asm__ __volatile__("lock xchgl %%eax, (%%edi)":"=a"(v):"a"(1),"D"(lockptr));}while(0)
#define RELEASE(lockptr) __asm__ __volatile__("lock andl $0, (%%edi)"::"D"(lockptr));
typedef signed long long Sint64;
typedef Uint size_t;
-#if USE_PAE
typedef Uint64 tPAddr;
-#else
-typedef Uint32 tPAddr;
-#endif
typedef Uint32 tVAddr;
typedef struct {