#define KERNEL_BASE 0xC0000000
#define BITS 32
+#define INVLPTR ((void*)-1)
+
// Allow nested spinlocks?
#define STACKED_LOCKS 2 // 0: No, 1: Per-CPU, 2: Per-Thread
#define LOCK_DISABLE_INTS 1
// === MACROS ===
/**
- * \brief Halt the CPU
+ * \brief Halt the CPU (shorter version of yield)
*/
#define HALT() __asm__ __volatile__ ("hlt")
/**
typedef Uint32 tVAddr;
typedef struct {
- Uint gs, fs, es, ds;
- Uint edi, esi, ebp, kesp;
- Uint ebx, edx, ecx, eax;
- Uint int_num, err_code;
- Uint eip, cs;
- Uint eflags, esp, ss;
+ Uint32 gs, fs, es, ds;
+ Uint32 edi, esi, ebp, kesp;
+ Uint32 ebx, edx, ecx, eax;
+ Uint32 int_num, err_code;
+ Uint32 eip, cs;
+ Uint32 eflags, esp, ss;
} tRegs;
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);