summaryrefslogtreecommitdiff
path: root/sys/src/cmd/vmx/dat.h
diff options
context:
space:
mode:
authoraiju <devnull@localhost>2017-06-13 14:18:14 +0000
committeraiju <devnull@localhost>2017-06-13 14:18:14 +0000
commitd5e55f51407fe5b8516f6488f5813d026d05fd56 (patch)
tree4c09c3d8f0cd9095d9058d179db0f05e110c859c /sys/src/cmd/vmx/dat.h
parent8029c3d8c4bdae74b9a68beeff1edb8a21cceeed (diff)
add vmx(1)
Diffstat (limited to 'sys/src/cmd/vmx/dat.h')
-rw-r--r--sys/src/cmd/vmx/dat.h64
1 files changed, 64 insertions, 0 deletions
diff --git a/sys/src/cmd/vmx/dat.h b/sys/src/cmd/vmx/dat.h
new file mode 100644
index 000000000..5a43b11e0
--- /dev/null
+++ b/sys/src/cmd/vmx/dat.h
@@ -0,0 +1,64 @@
+typedef struct PCIDev PCIDev;
+typedef struct PCICap PCICap;
+typedef struct PCIBar PCIBar;
+typedef struct Region Region;
+
+extern int halt, irqactive;
+
+enum {
+ BY2PG = 4096
+};
+
+#define RPC "pc"
+#define RSP "sp"
+#define RAX "ax"
+#define RBX "bx"
+#define RCX "cx"
+#define RDX "dx"
+
+enum {
+ MMIORD = 0,
+ MMIOWRP = 1,
+ MMIOWR = 2,
+};
+
+struct Region {
+ uintptr start, end;
+ enum { REGNO, REGMEM, REGFB } type;
+ char *segname;
+ uvlong segoff;
+ void *v, *ve;
+ Region *next;
+};
+
+extern Region *mmap;
+
+#define BDF(b,d,f) ((b)<<16&0xff0000|(d)<<11&0xf800|(f)<<8&0x700)
+
+struct PCIBar {
+ PCIDev *d;
+ u8int type;
+ u32int addr, length;
+ PCIBar *busnext, *busprev;
+ u32int (*io)(int, u16int, u32int, int, void *);
+ void *aux;
+};
+
+struct PCIDev {
+ u32int bdf, viddid, clrev, subid;
+ u16int ctrl;
+ u8int irqno, irqactive;
+ PCIBar bar[6];
+ PCIDev *next;
+ PCICap *cap;
+ u8int capalloc;
+};
+
+struct PCICap {
+ PCIDev *dev;
+ u8int length;
+ u8int addr;
+ u32int (*read)(PCICap *, u8int);
+ void (*write)(PCICap *, u8int, u32int, u32int);
+ PCICap *next;
+};