Index: /trunk/src/VBox/Devices/Bus/DevPCI.cpp
===================================================================
--- /trunk/src/VBox/Devices/Bus/DevPCI.cpp	(revision 485)
+++ /trunk/src/VBox/Devices/Bus/DevPCI.cpp	(revision 486)
@@ -114,4 +114,6 @@
 typedef struct PCIGLOBALS
 {
+    /** Irq levels for the four PCI Irqs. */
+    uint32_t            pci_irq_levels[4][PCI_IRQ_WORDS];
     /** The base address for PCI assigned MMIO addresses. */
     RTGCPHYS            pci_mem_base;
@@ -120,6 +122,4 @@
     /** The next MMIO address which the PCI BIOS will use. */
     uint32_t            pci_bios_mem_addr;
-    /** Irq levels for the four PCI Irqs. */
-    uint32_t            pci_irq_levels[4][PCI_IRQ_WORDS];
     /** I/O APIC usage flag */
     bool                fUseIoApic;
@@ -149,5 +149,5 @@
     uint32_t            uConfigReg;
     /** Array of PCI devices. */
-    PPCIDEVICE          devices[256];
+    HCPTRTYPE(PPCIDEVICE) devices[256];
 
     /** HC pointer to the device instance. */
@@ -184,4 +184,5 @@
 
 
+#ifndef VBOX_DEVICE_STRUCT_TESTCASE
 /*******************************************************************************
 *   Internal Functions                                                         *
@@ -1557,3 +1558,3 @@
 };
 #endif /* IN_RING3 */
-
+#endif /* !VBOX_DEVICE_STRUCT_TESTCASE */
Index: /trunk/src/VBox/Devices/Bus/PCIInternal.h
===================================================================
--- /trunk/src/VBox/Devices/Bus/PCIInternal.h	(revision 485)
+++ /trunk/src/VBox/Devices/Bus/PCIInternal.h	(revision 486)
@@ -33,5 +33,5 @@
     uint32_t                        size;
     uint8_t                         type; /* PCIADDRESSSPACE */
-    uint8_t                         padding[3];
+    uint8_t                         padding[HC_ARCH_BITS == 32 ? 3 : 7];
     /** Callback called when the region is mapped. */
     HCPTRTYPE(PFNPCIIOREGIONMAP)    map_func;
@@ -50,10 +50,12 @@
 typedef struct PCIDEVICEINT
 {
+    /** I/O regions. */
+    PCIIOREGION                     aIORegions[PCI_NUM_REGIONS];
     /** Pointer to the PCI bus of the device. */
-    HCPTRTYPE(struct PCIBus *)      pBus;
+    R3PTRTYPE(struct PCIBus *)      pBus;
     /** Read config callback. */
-    HCPTRTYPE(PFNPCICONFIGREAD)     pfnConfigRead;
+    R3PTRTYPE(PFNPCICONFIGREAD)     pfnConfigRead;
     /** Write config callback. */
-    HCPTRTYPE(PFNPCICONFIGWRITE)    pfnConfigWrite;
+    R3PTRTYPE(PFNPCICONFIGWRITE)    pfnConfigWrite;
     /** The irq assigned to the device. */
     int32_t                         iIrq;
@@ -61,6 +63,4 @@
      * If clear the device and it's functions can be relocated to satisfy the slot request of another device. */
     bool                            fRequestedDevFn;
-    /** I/O regions. */
-    PCIIOREGION                     aIORegions[PCI_NUM_REGIONS];
 } PCIDEVICEINT;
 
