: "%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
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_ */