These changes are the raw update to qemu-2.6.
[kvmfornfv.git] / qemu / roms / seabios / src / fw / paravirt.h
1 #ifndef __PV_H
2 #define __PV_H
3
4 #include "config.h" // CONFIG_*
5 #include "biosvar.h" // GET_GLOBAL
6
7 // Types of paravirtualized platforms.
8 #define PF_QEMU     (1<<0)
9 #define PF_XEN      (1<<1)
10 #define PF_KVM      (1<<2)
11
12 typedef struct QemuCfgDmaAccess {
13     u32 control;
14     u32 length;
15     u64 address;
16 } PACKED QemuCfgDmaAccess;
17
18 extern u32 RamSize;
19 extern u64 RamSizeOver4G;
20 extern int PlatformRunningOn;
21
22 static inline int runningOnQEMU(void) {
23     return CONFIG_QEMU || (
24         CONFIG_QEMU_HARDWARE && GET_GLOBAL(PlatformRunningOn) & PF_QEMU);
25 }
26 static inline int runningOnXen(void) {
27     return CONFIG_XEN && GET_GLOBAL(PlatformRunningOn) & PF_XEN;
28 }
29 static inline int runningOnKVM(void) {
30     return CONFIG_QEMU && GET_GLOBAL(PlatformRunningOn) & PF_KVM;
31 }
32
33 // Common paravirt ports.
34 #define PORT_SMI_CMD                0x00b2
35 #define PORT_SMI_STATUS             0x00b3
36 #define PORT_QEMU_CFG_CTL           0x0510
37 #define PORT_QEMU_CFG_DATA          0x0511
38 #define PORT_QEMU_CFG_DMA_ADDR_HIGH 0x0514
39 #define PORT_QEMU_CFG_DMA_ADDR_LOW  0x0518
40
41 // QEMU_CFG_DMA_CONTROL bits
42 #define QEMU_CFG_DMA_CTL_ERROR   0x01
43 #define QEMU_CFG_DMA_CTL_READ    0x02
44 #define QEMU_CFG_DMA_CTL_SKIP    0x04
45 #define QEMU_CFG_DMA_CTL_SELECT  0x08
46
47 // QEMU_CFG_DMA ID bit
48 #define QEMU_CFG_VERSION_DMA    2
49
50 int qemu_cfg_dma_enabled(void);
51 void qemu_preinit(void);
52 void qemu_platform_setup(void);
53 void qemu_cfg_init(void);
54
55 #endif