xref: /kvm-unit-tests/lib/x86/fwcfg.h (revision eb2db85dd01f6840e3157e3e9ca20f2c98e0e09d)
1 #ifndef FWCFG_H
2 #define FWCFG_H
3 
4 #include <stdint.h>
5 #include <stdbool.h>
6 
7 #define FW_CFG_SIGNATURE        0x00
8 #define FW_CFG_ID               0x01
9 #define FW_CFG_UUID             0x02
10 #define FW_CFG_RAM_SIZE         0x03
11 #define FW_CFG_NOGRAPHIC        0x04
12 #define FW_CFG_NB_CPUS          0x05
13 #define FW_CFG_MACHINE_ID       0x06
14 #define FW_CFG_KERNEL_ADDR      0x07
15 #define FW_CFG_KERNEL_SIZE      0x08
16 #define FW_CFG_KERNEL_CMDLINE   0x09
17 #define FW_CFG_INITRD_ADDR      0x0a
18 #define FW_CFG_INITRD_SIZE      0x0b
19 #define FW_CFG_BOOT_DEVICE      0x0c
20 #define FW_CFG_NUMA             0x0d
21 #define FW_CFG_BOOT_MENU        0x0e
22 #define FW_CFG_MAX_CPUS         0x0f
23 #define FW_CFG_MAX_ENTRY        0x10
24 #define FW_CFG_MAX_RAM		0x11
25 
26 #define FW_CFG_WRITE_CHANNEL    0x4000
27 #define FW_CFG_ARCH_LOCAL       0x8000
28 #define FW_CFG_ENTRY_MASK       ~(FW_CFG_WRITE_CHANNEL | FW_CFG_ARCH_LOCAL)
29 
30 #define FW_CFG_INVALID          0xffff
31 
32 #define BIOS_CFG_IOPORT 0x510
33 
34 #define FW_CFG_ACPI_TABLES (FW_CFG_ARCH_LOCAL + 0)
35 #define FW_CFG_SMBIOS_ENTRIES (FW_CFG_ARCH_LOCAL + 1)
36 #define FW_CFG_IRQ0_OVERRIDE (FW_CFG_ARCH_LOCAL + 2)
37 
38 extern bool no_test_device;
39 
40 static inline bool test_device_enabled(void)
41 {
42 	return !no_test_device;
43 }
44 
45 uint8_t fwcfg_get_u8(unsigned index);
46 uint16_t fwcfg_get_u16(unsigned index);
47 uint32_t fwcfg_get_u32(unsigned index);
48 uint64_t fwcfg_get_u64(unsigned index);
49 
50 unsigned fwcfg_get_nb_cpus(void);
51 
52 #endif
53 
54