summaryrefslogtreecommitdiff
path: root/sys/src/cmd/vmx/x86.h
diff options
context:
space:
mode:
authoraiju <devnull@localhost>2017-06-21 22:18:26 +0000
committeraiju <devnull@localhost>2017-06-21 22:18:26 +0000
commit5c0bff4ba204cfad7aedb8c1c20f1c29265dcb01 (patch)
tree055fa5e6319b94d0f2992480a0e6ed0271179fb6 /sys/src/cmd/vmx/x86.h
parent37b9ab5a043e45a68979632c177e11af7a439027 (diff)
vmx(1): add support for (so far) crude 9p debugging fs; add gdb stub; clean up linux gdt code
Diffstat (limited to 'sys/src/cmd/vmx/x86.h')
-rw-r--r--sys/src/cmd/vmx/x86.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/sys/src/cmd/vmx/x86.h b/sys/src/cmd/vmx/x86.h
new file mode 100644
index 000000000..df19a35b4
--- /dev/null
+++ b/sys/src/cmd/vmx/x86.h
@@ -0,0 +1,29 @@
+#define GDTTYPE(x) ((uvlong)(x)<<40)
+enum {
+ GDTR = GDTTYPE(0x10), /* read-only */
+ GDTRW = GDTTYPE(0x12), /* read-write *
+ GDTX = GDTTYPE(0x18), /* execute-only */
+ GDTRX = GDTTYPE(0x1A), /* read-execute */
+
+ GDTTSS = GDTTYPE(0x09),
+
+ GDTA = 1ULL<<40, /* accessed */
+ GDTE = 1ULL<<42, /* expand down (data only) */
+ GDTC = GDTE, /* conforming (code only) */
+ GDTP = 1ULL<<47, /* present */
+ GDT64 = 1ULL<<53, /* 64-bit code segment */
+ GDT32 = 1ULL<<54, /* 32-bit segment */
+ GDTG = 1ULL<<55, /* granularity */
+};
+#define GDTLIM(l) ((l) & 0xffff | (uvlong)((l) & 0xf0000)<<32)
+#define GDTBASE(l) (((uvlong)(l) & 0xffffff)<<16 | (uvlong)((l) & 0xff000000)<<32)
+#define GDTDPL(l) ((uvlong)(l)<<45)
+
+enum {
+ Cr0Pg = 1<<31,
+
+ Cr4Pse = 1<<4,
+ Cr4Pae = 1<<5,
+
+ EferLme = 1<<8,
+};