// - Base Defintions
#define KERNEL_BASE 0xC0000000
#define BITS 32
+#define PAGE_SIZE 0x1000
#define INVLPTR ((void*)-1)
#define LOCK_DISABLE_INTS 1
// - Processor/Machine Specific Features
-#if ARCH != i386 && ARCH != i486 && ARCH != i586
+#if ARCH != x86 && ARCH != x86_smp
# error "Unknown architecture '" #ARCH "'"
#endif
/**
* \brief Halt the CPU (shorter version of yield)
*/
+#if 1
+#define HALT() do { \
+ Uint32 flags; \
+ __asm__ __volatile__ ("pushf;pop %0" : "=a"(flags)); \
+ if( !(flags & 0x200) ) Panic("HALT called with interrupts disabled"); \
+ __asm__ __volatile__ ("hlt"); \
+} while(0)
+#else
#define HALT() __asm__ __volatile__ ("hlt")
+#endif
/**
* \brief Fire a magic breakpoint (bochs)
*/
typedef Uint size_t;
typedef char BOOL;
-typedef Uint64 tPAddr;
+typedef Uint32 tPAddr;
typedef Uint32 tVAddr;
typedef struct {