// - Base Defintions
#define KERNEL_BASE 0xC0000000
#define BITS 32
+#define PAGE_SIZE 0x1000
#define INVLPTR ((void*)-1)
/**
* \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 {
typedef struct {
Uint EIP, ESP, EBP;
+ Uint32 UserCS, UserEIP;
} tTaskState;
// === FUNCTIONS ===
+extern void Debug_PutCharDebug(char ch);
+extern void Debug_PutStringDebug(const char *String);
+
extern int IS_LOCKED(struct sShortSpinlock *Lock);
extern int CPU_HAS_LOCK(struct sShortSpinlock *Lock);
extern void SHORTLOCK(struct sShortSpinlock *Lock);