X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Finclude%2Fdevices%2Fpci_types.h;h=34de6361d024ea770ae8d81b01dc00b70c5e2df5;hb=a0e1d8274aef54adcf50dce0b3843489f2a3cd21;hp=2f6882da2396ff57f381b5eb8b3fee1534a1a3ad;hpb=b35cb9f7d22a06d849820c8d4487c66f74ec42e2;p=palacios.git diff --git a/palacios/include/devices/pci_types.h b/palacios/include/devices/pci_types.h index 2f6882d..34de636 100644 --- a/palacios/include/devices/pci_types.h +++ b/palacios/include/devices/pci_types.h @@ -25,115 +25,40 @@ // struct pci_device_config struct pci_config_header { - union { - uint32_t reg_00; - struct { - uint16_t vendor_id; - uint16_t device_id; - } __attribute__((packed)); - } __attribute__((packed)); - - union { - uint32_t reg_04; - struct { - uint16_t command; - uint16_t status; - } __attribute__((packed)); - } __attribute__((packed)); + uint16_t vendor_id; + uint16_t device_id; - - union { - uint32_t reg_08; - struct { - uint16_t revision; - uint8_t subclass; - uint8_t class; - } __attribute__((packed)); - } __attribute__((packed)); - - union { - uint32_t reg_0c; - struct { - uint8_t cache_line_size; - uint8_t latency_time; - uint8_t header_type; // bits 6-0: 00: other, 01: pci-pci bridge, 02: pci-cardbus; bit 7: 1=multifunction - uint8_t BIST; - } __attribute__((packed)); - } __attribute__((packed)); + uint16_t command; + uint16_t status; + + + uint16_t revision; + uint8_t subclass; + uint8_t class; + + uint8_t cache_line_size; + uint8_t latency_time; + uint8_t header_type; // bits 6-0: 00: other, 01: pci-pci bridge, 02: pci-cardbus; bit 7: 1=multifunction + uint8_t BIST; - union { - uint32_t reg_10; - uint32_t BAR0; - } __attribute__((packed)); - - union { - uint32_t reg_14; - uint32_t BAR1; - } __attribute__((packed)); - - union { - uint32_t reg_18; - uint32_t BAR2; - } __attribute__((packed)); - - union { - uint32_t reg_1c; - uint32_t BAR3; - } __attribute__((packed)); - - union { - uint32_t reg_20; - uint32_t BAR4; - } __attribute__((packed)); - - union { - uint32_t reg_24; - uint32_t BAR5; - } __attribute__((packed)); - - - union { - uint32_t reg_28; - uint32_t cardbus_cis_pointer; - } __attribute__((packed)); - - union { - uint32_t reg_2c; - struct { - uint16_t subsystem_vendor_id; - uint16_t subsystem_id; - } __attribute__((packed)); - } __attribute__((packed)); - - union { - uint32_t reg_30; - uint32_t expansion_rom_address; - } __attribute__((packed));; - - union { - uint32_t reg_34; - struct { - uint8_t cap_ptr; // capabilities list offset in config space - uint8_t rsvd1[3]; - } __attribute__((packed)); - } __attribute__((packed)); - - union { - uint32_t reg_38; - uint32_t rsvd2; - } __attribute__((packed)); - - - union { - uint32_t reg_3c; - struct { - uint8_t intr_line; // 00=none, 01=IRQ1, etc. - uint8_t intr_pin; // 00=none, otherwise INTA# to INTD# - uint8_t min_grant; // min busmaster time - units of 250ns - uint8_t max_latency; // units of 250ns - busmasters - } __attribute__((packed)); - } __attribute__((packed)); + uint32_t BAR0; + uint32_t BAR1; + uint32_t BAR2; + uint32_t BAR3; + uint32_t BAR4; + uint32_t BAR5; + uint32_t cardbus_cis_pointer; + uint16_t subsystem_vendor_id; + uint16_t subsystem_id; + uint32_t expansion_rom_address; + uint8_t cap_ptr; // capabilities list offset in config space + uint8_t rsvd1[3]; + uint32_t rsvd2; + uint8_t intr_line; // 00=none, 01=IRQ1, etc. + uint8_t intr_pin; // 00=none, otherwise INTA# to INTD# + uint8_t min_grant; // min busmaster time - units of 250ns + uint8_t max_latency; // units of 250ns - busmasters } __attribute__((packed));