public uint Read32(AcpiObject.RegionSpace regionSpace, ulong offset) { uint result; switch (regionSpace) { case AcpiObject.RegionSpace.SystemMemory: IoMemory region = IoMemory.MapPhysicalMemory(offset, 4, true /*readable*/, false /*writable*/); result = region.Read32(0); break; case AcpiObject.RegionSpace.SystemIO: IoPort port = new IoPort((ushort)offset, 4, Access.Read); result = port.Read32(); break; case AcpiObject.RegionSpace.PCI_Config: pciConfigAddressPort.Write32(PciConfigEnableMask | (uint)offset); result = pciConfigDataPort.Read32(); break; default: throw new Exception("Unimplemented operation region type" + regionSpace); } #if DUMP_RAW_READ_WRITES DebugStub.WriteLine("ACPI read: space: " + regionSpace + ", offset: " + offset + ", bytes: " + 4 + ", result: " + result.ToString("X")); #endif return(result); }