- VBE banked mode fixes backported from rbench
[dosdemo] / src / util.h
index 8a46036..35d1a97 100644 (file)
@@ -168,14 +168,14 @@ static void INLINE memset16(void *dest, uint16_t val, int count)
        : "%eax", "%ebx", "%ecx", "%edx")
 
 #define debug_break() \
-       asm volatile ("int $3")
+       asm volatile("int $3")
 
 #define halt() \
        asm volatile("hlt")
 #endif
 
 #ifdef _MSC_VER
-void __inline memset16(void *dest, uint16_t val, int count)
+static void __inline memset16(void *dest, uint16_t val, int count)
 {
        __asm {
                cld
@@ -221,6 +221,23 @@ void __inline memset16(void *dest, uint16_t val, int count)
        do { \
                __asm { int 3 } \
        } while(0)
+
+static unsigned int __inline get_cs(void)
+{
+       unsigned int res;
+       __asm {
+               xor eax, eax
+               mov ax, cs
+               mov [res], ax
+       }
+       return res;
+}
 #endif
 
+unsigned int get_cs(void);
+#define get_cpl()      ((int)(get_cs() & 7))
+
+void get_msr(uint32_t msr, uint32_t *low, uint32_t *high);
+void set_msr(uint32_t msr, uint32_t low, uint32_t high);
+
 #endif /* UTIL_H_ */