Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


updated pci to simplify callback setup
[palacios.git] / palacios / include / devices / pci_types.h
index 2f6882d..34de636 100644 (file)
 
 // 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));