Fixes to x86_64 - Fixed MM_phys corrupting memory (forgot to initialise bitmap pointers)
[tpg/acess2.git] / Kernel / arch / x86_64 / include / arch.h
index 48d19ca..d419234 100644 (file)
@@ -5,11 +5,14 @@
 #ifndef _ARCH_H_
 #define _ARCH_H_
 
-#include <stdint.h>
+//#include <stdint.h>
 //#define KERNEL_BASE  0xFFFF8000##00000000
 #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;
@@ -34,10 +37,13 @@ typedef Uint64      size_t;
 
 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")
 

UCC git Repository :: git.ucc.asn.au