diff options
author | aiju <devnull@localhost> | 2017-06-13 14:18:14 +0000 |
---|---|---|
committer | aiju <devnull@localhost> | 2017-06-13 14:18:14 +0000 |
commit | d5e55f51407fe5b8516f6488f5813d026d05fd56 (patch) | |
tree | 4c09c3d8f0cd9095d9058d179db0f05e110c859c /sys/src/cmd/vmx/dat.h | |
parent | 8029c3d8c4bdae74b9a68beeff1edb8a21cceeed (diff) |
add vmx(1)
Diffstat (limited to 'sys/src/cmd/vmx/dat.h')
-rw-r--r-- | sys/src/cmd/vmx/dat.h | 64 |
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; +}; |