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