Index: /trunk/src/VBox/Devices/PC/DevACPI.cpp
===================================================================
--- /trunk/src/VBox/Devices/PC/DevACPI.cpp	(revision 16041)
+++ /trunk/src/VBox/Devices/PC/DevACPI.cpp	(revision 16042)
@@ -66,4 +66,5 @@
 #define SYSI_DATA       0x0000404c
 #define ACPI_RESET_BLK  0x00004050
+#define FDC_STATUS      0x00004054
 
 /* PM1x status register bits */
@@ -131,8 +132,5 @@
     SYSTEM_INFO_INDEX_MEMORY_LENGTH     = 0,
     SYSTEM_INFO_INDEX_USE_IOAPIC        = 1,
-    SYSTEM_INFO_INDEX_HPET_STATUS       = 2,
-    SYSTEM_INFO_INDEX_SMC_STATUS        = 3,
-    SYSTEM_INFO_INDEX_FDC_STATUS        = 4,
-    SYSTEM_INFO_INDEX_LAST              = 5,
+    SYSTEM_INFO_INDEX_LAST              = 2,
     SYSTEM_INFO_INDEX_INVALID           = 0x80,
     SYSTEM_INFO_INDEX_VALID             = 0x200
@@ -198,11 +196,4 @@
     /** Pointer to the driver connector interface */
     R3PTRTYPE(PPDMIACPICONNECTOR) pDrv;
-
-    /* If High Precision Event Timer device should be supported */
-    uint8_t             u8UseHpet;
-    /* If System Management Controller device should be supported */
-    uint8_t             u8UseSmc;
-
-    uint32_t            Alignment0; /**< Structure size alignment. */
 };
 
@@ -542,4 +533,5 @@
 IO_WRITE_PROTO (acpiBatIndexWrite);
 IO_READ_PROTO  (acpiBatDataRead);
+IO_READ_PROTO  (acpiFdcStatusRead);
 IO_READ_PROTO  (acpiSysInfoDataRead);
 IO_WRITE_PROTO (acpiSysInfoDataWrite);
@@ -1254,4 +1246,24 @@
 }
 
+IO_READ_PROTO (acpiFdcStatusRead)
+{
+    ACPIState *s = (ACPIState *)pvUser;
+
+    switch (cb)
+    {
+        case 4:
+            *pu32 = s->u8UseFdc
+                ?   STA_DEVICE_PRESENT_MASK                 /* present */
+                  | STA_DEVICE_ENABLED_MASK                 /* enabled and decodes its resources */
+                  | STA_DEVICE_SHOW_IN_UI_MASK              /* should be shown in UI */
+                  | STA_DEVICE_FUNCTIONING_PROPERLY_MASK    /* functioning properly */
+                : 0;                                        /* device not present */
+            break;
+        default:
+            return VERR_IOM_IOPORT_UNUSED;
+    }
+    return VINF_SUCCESS;
+}
+
 IO_WRITE_PROTO (acpiSysInfoIndexWrite)
 {
@@ -1265,17 +1277,4 @@
         else
         {
-            /* see comment at the declaration of u8IndexShift */
-            if (s->u8IndexShift == 0)
-            {
-                uint32_t u32Index;
-                for (u32Index = 0; u32Index < SYSTEM_INFO_INDEX_LAST; u32Index++)
-                {
-                    if (u32 == (u32Index << 2))
-                    {
-                        s->u8IndexShift = 2;
-                        break;
-                    }
-                }
-            }
             u32 >>= s->u8IndexShift;
             Assert (u32 < SYSTEM_INFO_INDEX_LAST);
@@ -1294,8 +1293,8 @@
 {
     ACPIState *s = (ACPIState *)pvUser;
-  
+
     switch (cb)
     {
-        case 4:            
+        case 4:
             switch (s->uSystemInfoIndex)
             {
@@ -1307,29 +1306,4 @@
                     *pu32 = s->u8UseIOApic;
                     break;
-
-                case SYSTEM_INFO_INDEX_HPET_STATUS:
-                    *pu32 = s->u8UseHpet ? (  STA_DEVICE_PRESENT_MASK
-                                            | STA_DEVICE_ENABLED_MASK
-                                            | STA_DEVICE_SHOW_IN_UI_MASK
-                                            | STA_DEVICE_FUNCTIONING_PROPERLY_MASK)
-                                         : 0;
-                    break;
-
-                case SYSTEM_INFO_INDEX_SMC_STATUS:
-                    *pu32 = s->u8UseSmc ? (  STA_DEVICE_PRESENT_MASK
-                                           | STA_DEVICE_ENABLED_MASK
-                                           /* no need to show this device in the UI */
-                                           | STA_DEVICE_FUNCTIONING_PROPERLY_MASK)
-                                        : 0;
-                    break;
-               
-                case SYSTEM_INFO_INDEX_FDC_STATUS:
-                    *pu32 = s->u8UseFdc ? (  STA_DEVICE_PRESENT_MASK
-                                           | STA_DEVICE_ENABLED_MASK
-                                           | STA_DEVICE_SHOW_IN_UI_MASK
-                                           | STA_DEVICE_FUNCTIONING_PROPERLY_MASK)
-                                        : 0;
-                    break;
-
  
                 /* Solaris 9 tries to read from this index */
@@ -1780,7 +1754,5 @@
                                "GCEnabled\0"
                                "R0Enabled\0"
-                               "FdcEnabled\0"
-                               "HpetEnabled\0"
-                               "SmcEnabled\0"))
+                               "FdcEnabled\0"))
         return PDMDEV_SET_ERROR(pDevIns, VERR_PDM_DEVINS_UNKNOWN_CFG_VALUES,
                                 N_("Configuration error: Invalid config key for ACPI device"));
@@ -1795,15 +1767,4 @@
         return PDMDEV_SET_ERROR(pDevIns, rc,
                                 N_("Configuration error: Failed to read \"IOAPIC\""));
-
-    /* query whether we are supposed to present HPET */
-    rc = CFGMR3QueryU8Def (pCfgHandle, "HpetEnabled", &s->u8UseHpet, 0);
-    if (RT_FAILURE(rc))
-        return PDMDEV_SET_ERROR(pDevIns, rc,
-                                N_("Configuration error: Failed to read \"HpetEnabled\""));
-     /* query whether we are supposed to present SMC */
-    rc = CFGMR3QueryU8Def (pCfgHandle, "SmcEnabled", &s->u8UseSmc, 0);
-    if (RT_FAILURE(rc))
-        return PDMDEV_SET_ERROR(pDevIns, rc,
-                                N_("Configuration error: Failed to read \"SmcEnabled\"")); 
 
     rc = CFGMR3QueryU16Def(pCfgHandle, "NumCPUs", &s->cCpus, 1);
@@ -1870,4 +1831,5 @@
     R (SYSI_INDEX,     1, acpiSysInfoIndexWrite, NULL,                "ACPI system info index");
     R (SYSI_DATA,      1, acpiSysInfoDataWrite,  acpiSysInfoDataRead, "ACPI system info data");
+    R (FDC_STATUS,     1, NULL,                  acpiFdcStatusRead,   "ACPI FDC status index");
     R (GPE0_BLK + L,   L, acpiGpe0EnWrite,       acpiGpe0EnRead,      "ACPI GPE0 Enable");
     R (GPE0_BLK,       L, acpiGpe0StsWrite,      acpiGpe0StsRead,     "ACPI GPE0 Status");
Index: /trunk/src/VBox/Devices/PC/vbox.dsl
===================================================================
--- /trunk/src/VBox/Devices/PC/vbox.dsl	(revision 16041)
+++ /trunk/src/VBox/Devices/PC/vbox.dsl	(revision 16042)
@@ -130,5 +130,5 @@
     Scope (\_SB)
     {
-        OperationRegion (SYSI, SystemIO, 0x4048, 0x8)
+        OperationRegion (SYSI, SystemIO, 0x4048, 0x08)
         Field (SYSI, DwordAcc, NoLock, Preserve)
         {
@@ -141,7 +141,4 @@
             MEML, 32,
             UIOA, 32,
-            UHPT, 32,
-            USMC, 32,
-            UFDC, 32,
             Offset (0x80),
             ININ, 32,
@@ -157,10 +154,4 @@
             DBG ("UIOA: ")
             HEX4 (UIOA)
-            DBG ("UHPT: ")
-            HEX4 (UHPT)
-            DBG ("USMC: ")
-            HEX4 (USMC)
-            DBG ("UFDC: ")
-            HEX4 (UFDC)
         }
 
@@ -498,54 +489,4 @@
             IRQ (Level, ActiveLow, Shared) {5,9,10,11}
         })
-        
-        // High Precision Event Timer
-        Device (HPET)
-        {
-            Name (_HID, EisaId ("PNP0103"))
-            Name (_CID, 0x010CD041)
-            Name (BUF0, ResourceTemplate ()
-            {
-                IRQNoFlags ()
-                    {2}
-                IRQNoFlags ()
-                    {8}
-                Memory32Fixed (ReadOnly,
-                    0xFED00000,         // Address Base
-                    0x00000400,         // Address Length
-                    _Y16)
-            })
-            Method (_STA, 0, NotSerialized)
-            {
-                Return (UHPT)
-            }
-            Method (_CRS, 0, Serialized)
-            {
-                Return (BUF0)
-            }
-        }
-
-        // System Management Controller
-        Device (SMC)
-        {
-            Name (_HID, EisaId ("APP0001"))
-            Name (_CID, "smc-napa")
-
-            Method (_STA, 0, NotSerialized)
-            {
-                Return (USMC)
-            }
-            Name (_CRS, ResourceTemplate ()
-            {
-                IO (Decode16,
-                    0x0300,             // Range Minimum
-                    0x0300,             // Range Maximum
-                    0x01,               // Alignment
-                    0x20,               // Length
-                    )
-                IRQNoFlags ()
-                    {6}
-            })
-        }
-
 
         // PCI bus 0
@@ -623,8 +564,15 @@
                     Name (_HID, EisaId ("PNP0700"))
 
+                    OperationRegion (CFDC, SystemIO, 0x4054, 0x08)
+                    Field (CFDC, DwordAcc, NoLock, Preserve)
+                    {
+                        FSTA, 32,
+                    }
+
                     Method (_STA, 0, NotSerialized)
                     {
-                          Return (UFDC)           
+                        Return (FSTA)
                     }
+
                     // Current resource settings
                     Name (_CRS, ResourceTemplate ()
Index: /trunk/src/VBox/Devices/testcase/tstDeviceStructSizeGC.cpp
===================================================================
--- /trunk/src/VBox/Devices/testcase/tstDeviceStructSizeGC.cpp	(revision 16041)
+++ /trunk/src/VBox/Devices/testcase/tstDeviceStructSizeGC.cpp	(revision 16042)
@@ -447,6 +447,4 @@
     GEN_CHECK_OFF(ACPIState, pDrvBase);
     GEN_CHECK_OFF(ACPIState, pDrv);
-    GEN_CHECK_OFF(ACPIState, u8UseHpet);
-    GEN_CHECK_OFF(ACPIState, u8UseSmc);
 
     /* PC/DevPIC.cpp */
Index: /trunk/src/VBox/Main/ConsoleImpl2.cpp
===================================================================
--- /trunk/src/VBox/Main/ConsoleImpl2.cpp	(revision 16041)
+++ /trunk/src/VBox/Main/ConsoleImpl2.cpp	(revision 16042)
@@ -558,6 +558,4 @@
         rc = CFGMR3InsertInteger(pCfg,  "IOAPIC", fIOAPIC);                         RC_CHECK();
         rc = CFGMR3InsertInteger(pCfg,  "FdcEnabled", fFdcEnabled);                 RC_CHECK();
-        rc = CFGMR3InsertInteger(pCfg,  "HpetEnabled", 0);                          RC_CHECK();
-        rc = CFGMR3InsertInteger(pCfg,  "SmcEnabled", 0);                           RC_CHECK();
         rc = CFGMR3InsertInteger(pInst, "PCIDeviceNo",          7);                 RC_CHECK();
         Assert(!afPciDeviceNo[7]);
