#ifndef __OPTIONROMS_H #define __OPTIONROMS_H #include "types.h" // u32 #define OPTION_ROM_SIGNATURE 0xaa55 struct rom_header { u16 signature; u8 size; u8 initVector[4]; u8 reserved[17]; u16 pcioffset; u16 pnpoffset; } PACKED; #define PCI_ROM_SIGNATURE 0x52494350 // "PCIR" struct pci_data { u32 signature; u16 vendor; u16 device; u16 vitaldata; u16 dlen; u8 drevision; u8 class_lo; u16 class_hi; u16 ilen; u16 irevision; u8 type; u8 indicator; u16 reserved; } PACKED; struct pnp_data { u32 signature; u8 revision; u8 len; u16 nextoffset; u8 reserved_08; u8 checksum; u32 devid; u16 manufacturer; u16 productname; u8 type_lo; u16 type_hi; u8 dev_flags; u16 bcv; u16 dv; u16 bev; u16 reserved_1c; u16 staticresource; } PACKED; #define OPTION_ROM_ALIGN 2048 #define OPTION_ROM_INITVECTOR offsetof(struct rom_header, initVector[0]) #define PCIROM_CODETYPE_X86 0 #endif