1*c865f654SCornelia Huck #ifndef _X86_FWCFG_H_ 2*c865f654SCornelia Huck #define _X86_FWCFG_H_ 37d36db35SAvi Kivity 47d36db35SAvi Kivity #include <stdint.h> 503b1e457SNadav Amit #include <stdbool.h> 67d36db35SAvi Kivity 77d36db35SAvi Kivity #define FW_CFG_SIGNATURE 0x00 87d36db35SAvi Kivity #define FW_CFG_ID 0x01 97d36db35SAvi Kivity #define FW_CFG_UUID 0x02 107d36db35SAvi Kivity #define FW_CFG_RAM_SIZE 0x03 117d36db35SAvi Kivity #define FW_CFG_NOGRAPHIC 0x04 127d36db35SAvi Kivity #define FW_CFG_NB_CPUS 0x05 137d36db35SAvi Kivity #define FW_CFG_MACHINE_ID 0x06 147d36db35SAvi Kivity #define FW_CFG_KERNEL_ADDR 0x07 157d36db35SAvi Kivity #define FW_CFG_KERNEL_SIZE 0x08 167d36db35SAvi Kivity #define FW_CFG_KERNEL_CMDLINE 0x09 177d36db35SAvi Kivity #define FW_CFG_INITRD_ADDR 0x0a 187d36db35SAvi Kivity #define FW_CFG_INITRD_SIZE 0x0b 197d36db35SAvi Kivity #define FW_CFG_BOOT_DEVICE 0x0c 207d36db35SAvi Kivity #define FW_CFG_NUMA 0x0d 217d36db35SAvi Kivity #define FW_CFG_BOOT_MENU 0x0e 227d36db35SAvi Kivity #define FW_CFG_MAX_CPUS 0x0f 2382147b77SPaolo Bonzini 2482147b77SPaolo Bonzini /* Dummy entries used when running on bare metal */ 25eb2db85dSNadav Amit #define FW_CFG_MAX_RAM 0x11 267d36db35SAvi Kivity 2782147b77SPaolo Bonzini #define FW_CFG_NUM_ENTRIES (FW_CFG_MAX_RAM + 1) 2882147b77SPaolo Bonzini 297d36db35SAvi Kivity #define FW_CFG_WRITE_CHANNEL 0x4000 307d36db35SAvi Kivity #define FW_CFG_ARCH_LOCAL 0x8000 317d36db35SAvi Kivity #define FW_CFG_ENTRY_MASK ~(FW_CFG_WRITE_CHANNEL | FW_CFG_ARCH_LOCAL) 327d36db35SAvi Kivity 337d36db35SAvi Kivity #define FW_CFG_INVALID 0xffff 347d36db35SAvi Kivity 357d36db35SAvi Kivity #define BIOS_CFG_IOPORT 0x510 367d36db35SAvi Kivity 377d36db35SAvi Kivity #define FW_CFG_ACPI_TABLES (FW_CFG_ARCH_LOCAL + 0) 387d36db35SAvi Kivity #define FW_CFG_SMBIOS_ENTRIES (FW_CFG_ARCH_LOCAL + 1) 397d36db35SAvi Kivity #define FW_CFG_IRQ0_OVERRIDE (FW_CFG_ARCH_LOCAL + 2) 407d36db35SAvi Kivity 4103b1e457SNadav Amit extern bool no_test_device; 4203b1e457SNadav Amit test_device_enabled(void)4303b1e457SNadav Amitstatic inline bool test_device_enabled(void) 4403b1e457SNadav Amit { 4503b1e457SNadav Amit return !no_test_device; 4603b1e457SNadav Amit } 4703b1e457SNadav Amit 487d36db35SAvi Kivity uint8_t fwcfg_get_u8(unsigned index); 497d36db35SAvi Kivity uint16_t fwcfg_get_u16(unsigned index); 507d36db35SAvi Kivity uint32_t fwcfg_get_u32(unsigned index); 517d36db35SAvi Kivity uint64_t fwcfg_get_u64(unsigned index); 527d36db35SAvi Kivity 537d36db35SAvi Kivity unsigned fwcfg_get_nb_cpus(void); 547d36db35SAvi Kivity 557d36db35SAvi Kivity #endif 567d36db35SAvi Kivity 57