0N/A// Copyright (C) 2006 InnoTek Systemberatung GmbH
0N/A// This file is part of VirtualBox Open Source Edition (OSE), as
0N/A// you can redistribute it
and/or modify it under the terms of the GNU
0N/A// General Public License as published by the Free Software Foundation,
0N/A// in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
0N/A// distribution. VirtualBox OSE is distributed in the hope that it will
0N/A// be useful, but WITHOUT ANY WARRANTY of any kind.
0N/A// If you received this file as part of a commercial VirtualBox
0N/A// distribution, then only the terms of your commercial VirtualBox
0N/A// license agreement apply instead of the previous paragraph.
0N/A // Declare debugging ports withing SystemIO
0N/A OperationRegion(DBG0, SystemIO, 0x3000, 4)
0N/A // Writes to this field Will dump hex char
0N/A Field (DBG0, ByteAcc, NoLock, Preserve)
0N/A // Writes to this field Will dump hex word
0N/A Field (DBG0, WordAcc, NoLock, Preserve)
0N/A // Writes to this field Will dump hex double word
0N/A Field (DBG0, DWordAcc, NoLock, Preserve)
0N/A // Writes to this field will dump ascii char
0N/A Field (DBG0, ByteAcc, NoLock, Preserve)
0N/A // Code from Microsoft sample
0N/A // SLEN(Str) - Returns the length of Str (excluding NULL).
0N/A // Note: The caller must make sure that the argument is a string object.
0N/A Return(Sizeof(Local0))
0N/A // Note: The caller must make sure that the argument is a string object.
0N/A // Local0 contains length of string + NULL.
0N/A Add(SLEN(Local0), One, Local0)
0N/A // Convert the string object into a buffer object.
0N/A Name(BUFF, Buffer(Local0) {})
0N/A // Convert ASCII string to buffer and store it's contents (char by
0N/A // char) into DCHR (thus possibly writing the string to console)
0N/A Method (\DBG, 1, NotSerialized)
0N/A Store(S2BF (Local0), Local1)
0N/A Store(SizeOf (Local1), Local0)
0N/A Store (DerefOf (Index (Local1, Local2)), DCHR)
0N/A // #1463: Showing the CPU can make the guest do bad things on it like SpeedStep.
0N/A // In this case, XP SP2 contains this buggy
Intelppm.sys driver which wants to mess
0N/A // with SpeedStep if it finds a CPU object and when it finds out that it can't, it
0N/A // tries to unload and crashes (MS probably never tested this code path).
0N/A// Processor (CPU1, 0x01, 0x00000000, 0x00) {}
0N/A OperationRegion (SYSI, SystemIO, 0x4048, 0x08)
0N/A Field (SYSI, DwordAcc, NoLock, Preserve)
IndexField (IDX0, DAT0, DwordAcc, NoLock, Preserve)
Method (_INI, 0, NotSerialized)
// PCI PIC IRQ Routing table
// Must match
pci.c:pci_slot_get_pirq
Package (0x04) {0x0002FFFF, 0x00, LNKB, 0x00,},
Package (0x04) {0x0002FFFF, 0x01, LNKC, 0x00,},
Package (0x04) {0x0002FFFF, 0x02, LNKD, 0x00,},
Package (0x04) {0x0002FFFF, 0x03, LNKA, 0x00,},
Package (0x04) {0x0003FFFF, 0x00, LNKC, 0x00,},
Package (0x04) {0x0003FFFF, 0x01, LNKD, 0x00,},
Package (0x04) {0x0003FFFF, 0x02, LNKA, 0x00,},
Package (0x04) {0x0003FFFF, 0x03, LNKB, 0x00,},
Package (0x04) {0x0004FFFF, 0x00, LNKD, 0x00,},
Package (0x04) {0x0004FFFF, 0x01, LNKA, 0x00,},
Package (0x04) {0x0004FFFF, 0x02, LNKB, 0x00,},
Package (0x04) {0x0004FFFF, 0x03, LNKC, 0x00,},
Package (0x04) {0x0005FFFF, 0x00, LNKA, 0x00,},
Package (0x04) {0x0005FFFF, 0x01, LNKB, 0x00,},
Package (0x04) {0x0005FFFF, 0x02, LNKC, 0x00,},
Package (0x04) {0x0005FFFF, 0x03, LNKD, 0x00,},
Package (0x04) {0x0006FFFF, 0x00, LNKB, 0x00,},
Package (0x04) {0x0006FFFF, 0x01, LNKC, 0x00,},
Package (0x04) {0x0006FFFF, 0x02, LNKD, 0x00,},
Package (0x04) {0x0006FFFF, 0x03, LNKA, 0x00,},
Package (0x04) {0x0007FFFF, 0x00, LNKC, 0x00,},
Package (0x04) {0x0007FFFF, 0x01, LNKD, 0x00,},
Package (0x04) {0x0007FFFF, 0x02, LNKA, 0x00,},
Package (0x04) {0x0007FFFF, 0x03, LNKB, 0x00,},
Package (0x04) {0x0008FFFF, 0x00, LNKD, 0x00,},
Package (0x04) {0x0008FFFF, 0x01, LNKA, 0x00,},
Package (0x04) {0x0008FFFF, 0x02, LNKB, 0x00,},
Package (0x04) {0x0008FFFF, 0x03, LNKC, 0x00,},
Package (0x04) {0x0009FFFF, 0x00, LNKA, 0x00,},
Package (0x04) {0x0009FFFF, 0x01, LNKB, 0x00,},
Package (0x04) {0x0009FFFF, 0x02, LNKC, 0x00,},
Package (0x04) {0x0009FFFF, 0x03, LNKD, 0x00,},
Package (0x04) {0x000AFFFF, 0x00, LNKB, 0x00,},
Package (0x04) {0x000AFFFF, 0x01, LNKC, 0x00,},
Package (0x04) {0x000AFFFF, 0x02, LNKD, 0x00,},
Package (0x04) {0x000AFFFF, 0x03, LNKA, 0x00,},
Package (0x04) {0x000BFFFF, 0x00, LNKC, 0x00,},
Package (0x04) {0x000BFFFF, 0x01, LNKD, 0x00,},
Package (0x04) {0x000BFFFF, 0x02, LNKA, 0x00,},
Package (0x04) {0x000BFFFF, 0x03, LNKB, 0x00,},
Package (0x04) {0x000CFFFF, 0x00, LNKD, 0x00,},
Package (0x04) {0x000CFFFF, 0x01, LNKA, 0x00,},
Package (0x04) {0x000CFFFF, 0x02, LNKB, 0x00,},
Package (0x04) {0x000CFFFF, 0x03, LNKC, 0x00,},
Package (0x04) {0x000DFFFF, 0x00, LNKA, 0x00,},
Package (0x04) {0x000DFFFF, 0x01, LNKB, 0x00,},
Package (0x04) {0x000DFFFF, 0x02, LNKC, 0x00,},
Package (0x04) {0x000DFFFF, 0x03, LNKD, 0x00,},
Package (0x04) {0x000EFFFF, 0x00, LNKB, 0x00,},
Package (0x04) {0x000EFFFF, 0x01, LNKC, 0x00,},
Package (0x04) {0x000EFFFF, 0x02, LNKD, 0x00,},
Package (0x04) {0x000EFFFF, 0x03, LNKA, 0x00,},
Package (0x04) {0x000FFFFF, 0x00, LNKC, 0x00,},
Package (0x04) {0x000FFFFF, 0x01, LNKD, 0x00,},
Package (0x04) {0x000FFFFF, 0x02, LNKA, 0x00,},
Package (0x04) {0x000FFFFF, 0x03, LNKB, 0x00,}
// PCI I/O APIC IRQ Routing table
// Must match
pci.c:pci_slot_get_acpi_pirq
Package (0x04) {0x0002FFFF, 0x00, 0x00, 0x12,},
Package (0x04) {0x0002FFFF, 0x01, 0x00, 0x13,},
Package (0x04) {0x0002FFFF, 0x02, 0x00, 0x14,},
Package (0x04) {0x0002FFFF, 0x03, 0x00, 0x15,},
Package (0x04) {0x0003FFFF, 0x00, 0x00, 0x13,},
Package (0x04) {0x0003FFFF, 0x01, 0x00, 0x14,},
Package (0x04) {0x0003FFFF, 0x02, 0x00, 0x15,},
Package (0x04) {0x0003FFFF, 0x03, 0x00, 0x16,},
Package (0x04) {0x0004FFFF, 0x00, 0x00, 0x14,},
Package (0x04) {0x0004FFFF, 0x01, 0x00, 0x15,},
Package (0x04) {0x0004FFFF, 0x02, 0x00, 0x16,},
Package (0x04) {0x0004FFFF, 0x03, 0x00, 0x17,},
Package (0x04) {0x0005FFFF, 0x00, 0x00, 0x15,},
Package (0x04) {0x0005FFFF, 0x01, 0x00, 0x16,},
Package (0x04) {0x0005FFFF, 0x02, 0x00, 0x17,},
Package (0x04) {0x0005FFFF, 0x03, 0x00, 0x10,},
Package (0x04) {0x0006FFFF, 0x00, 0x00, 0x16,},
Package (0x04) {0x0006FFFF, 0x01, 0x00, 0x17,},
Package (0x04) {0x0006FFFF, 0x02, 0x00, 0x10,},
Package (0x04) {0x0006FFFF, 0x03, 0x00, 0x11,},
Package (0x04) {0x0007FFFF, 0x00, 0x00, 0x17,},
Package (0x04) {0x0007FFFF, 0x01, 0x00, 0x10,},
Package (0x04) {0x0007FFFF, 0x02, 0x00, 0x11,},
Package (0x04) {0x0007FFFF, 0x03, 0x00, 0x12,},
Package (0x04) {0x0008FFFF, 0x00, 0x00, 0x10,},
Package (0x04) {0x0008FFFF, 0x01, 0x00, 0x11,},
Package (0x04) {0x0008FFFF, 0x02, 0x00, 0x12,},
Package (0x04) {0x0008FFFF, 0x03, 0x00, 0x13,},
Package (0x04) {0x0009FFFF, 0x00, 0x00, 0x11,},
Package (0x04) {0x0009FFFF, 0x01, 0x00, 0x12,},
Package (0x04) {0x0009FFFF, 0x02, 0x00, 0x13,},
Package (0x04) {0x0009FFFF, 0x03, 0x00, 0x14,},
Package (0x04) {0x000AFFFF, 0x00, 0x00, 0x12,},
Package (0x04) {0x000AFFFF, 0x01, 0x00, 0x13,},
Package (0x04) {0x000AFFFF, 0x02, 0x00, 0x14,},
Package (0x04) {0x000AFFFF, 0x03, 0x00, 0x15,},
Package (0x04) {0x000BFFFF, 0x00, 0x00, 0x13,},
Package (0x04) {0x000BFFFF, 0x01, 0x00, 0x14,},
Package (0x04) {0x000BFFFF, 0x02, 0x00, 0x15,},
Package (0x04) {0x000BFFFF, 0x03, 0x00, 0x16,},
Package (0x04) {0x000CFFFF, 0x00, 0x00, 0x14,},
Package (0x04) {0x000CFFFF, 0x01, 0x00, 0x15,},
Package (0x04) {0x000CFFFF, 0x02, 0x00, 0x16,},
Package (0x04) {0x000CFFFF, 0x03, 0x00, 0x17,},
Package (0x04) {0x000DFFFF, 0x00, 0x00, 0x15,},
Package (0x04) {0x000DFFFF, 0x01, 0x00, 0x16,},
Package (0x04) {0x000DFFFF, 0x02, 0x00, 0x17,},
Package (0x04) {0x000DFFFF, 0x03, 0x00, 0x10,},
Package (0x04) {0x000EFFFF, 0x00, 0x00, 0x16,},
Package (0x04) {0x000EFFFF, 0x01, 0x00, 0x17,},
Package (0x04) {0x000EFFFF, 0x02, 0x00, 0x10,},
Package (0x04) {0x000EFFFF, 0x03, 0x00, 0x11,},
Package (0x04) {0x000FFFFF, 0x00, 0x00, 0x17,},
Package (0x04) {0x000FFFFF, 0x01, 0x00, 0x10,},
Package (0x04) {0x000FFFFF, 0x02, 0x00, 0x11,},
Package (0x04) {0x000FFFFF, 0x03, 0x00, 0x12,}
// Possible resource settings for PCI link A
Name (PRSA, ResourceTemplate ()
IRQ (Level, ActiveLow, Shared) {5,9,10,11}
// Possible resource settings for PCI link B
Name (PRSB, ResourceTemplate ()
IRQ (Level, ActiveLow, Shared) {5,9,10,11}
// Possible resource settings for PCI link C
Name (PRSC, ResourceTemplate ()
IRQ (Level, ActiveLow, Shared) {5,9,10,11}
// Possible resource settings for PCI link D
Name (PRSD, ResourceTemplate ()
IRQ (Level, ActiveLow, Shared) {5,9,10,11}
Name (_HID, EisaId ("PNP0A03"))
Name (_ADR, 0x00) // address
Name (_BBN, 0x00) // base bus adddress
// Method that returns routing table
Method (_PRT, 0, NotSerialized)
if (LEqual (LAnd (PICM, UIOA), Zero)) {
// Address of the PIIX3 (device 1 function 0)
OperationRegion (PCIC, PCI_Config, 0x00, 0xff)
Field (PCIC, ByteAcc, NoLock, Preserve)
Name (_HID, EisaId ("PNP0303"))
Method (_STA, 0, NotSerialized)
Name (_CRS, ResourceTemplate ()
IO (Decode16, 0x0060, 0x0060, 0x00, 0x01)
IO (Decode16, 0x0064, 0x0064, 0x00, 0x01)
Name (_HID, EisaId ("PNP0200"))
Name (_CRS, ResourceTemplate ()
IO (Decode16, 0x0000, 0x0000, 0x01, 0x10)
IO (Decode16, 0x0080, 0x0080, 0x01, 0x10)
IO (Decode16, 0x00C0, 0x00C0, 0x01, 0x20)
DMA (Compatibility, BusMaster, Transfer8_16) {4}
// Floppy disk controller
Name (_HID, EisaId ("PNP0700"))
// Current resource settings
Name (_CRS, ResourceTemplate ()
IO (Decode16, 0x03F0, 0x03F0, 0x01, 0x06)
IO (Decode16, 0x03F7, 0x03F7, 0x01, 0x01)
DMA (Compatibility, NotBusMaster, Transfer8) {2}
// Possible resource settings
Name (_PRS, ResourceTemplate ()
IO (Decode16, 0x03F0, 0x03F0, 0x01, 0x06)
IO (Decode16, 0x03F7, 0x03F7, 0x01, 0x01)
DMA (Compatibility, NotBusMaster, Transfer8) {2}
Name (_HID, EisaId ("PNP0F03"))
Method (_STA, 0, NotSerialized)
Name (_CRS, ResourceTemplate ()
IO (Decode16, 0x0060, 0x0060, 0x00, 0x01)
IO (Decode16, 0x0064, 0x0064, 0x00, 0x01)
// Control method battery
Name (_HID, EisaId ("PNP0C0A"))
// GPE.0 must be set and SCI raised when
// battery info changed and _BIF must be
Method (_L00, 0, NotSerialized)
OperationRegion (CBAT, SystemIO, 0x4040, 0x08)
Field (CBAT, DwordAcc, NoLock, Preserve)
IndexField (IDX0, DAT0, DwordAcc, NoLock, Preserve)
Method (_STA, 0, NotSerialized)
0x01, // Power unit, 1 - mA
0x7fffffff, // Design capacity
0x7fffffff, // Last full charge capacity
0x00, // Battery technology
0xffffffff, // Design voltage
0x00, // Design capacity of Warning
0x00, // Design capacity of Low
0x04, // Battery capacity granularity 1
0x04, // Battery capacity granularity 2
"InnoTek" // OEM Information
0x7fffffff, // Battery present rate
0x7fffffff, // Battery remaining capacity
0x7fffffff // Battery present voltage
Method (_BIF, 0, NotSerialized)
Store (UNIT, Index (PBIF, 0,))
Store (DCAP, Index (PBIF, 1,))
Store (LFCP, Index (PBIF, 2,))
Store (BTEC, Index (PBIF, 3,))
Store (DVOL, Index (PBIF, 4,))
Store (DWRN, Index (PBIF, 5,))
Store (DLOW, Index (PBIF, 6,))
Store (GRN1, Index (PBIF, 7,))
Store (GRN2, Index (PBIF, 8,))
HEX4 (DerefOf (Index (PBIF, 0,)))
HEX4 (DerefOf (Index (PBIF, 1,)))
HEX4 (DerefOf (Index (PBIF, 2,)))
HEX4 (DerefOf (Index (PBIF, 3,)))
HEX4 (DerefOf (Index (PBIF, 4,)))
HEX4 (DerefOf (Index (PBIF, 5,)))
HEX4 (DerefOf (Index (PBIF, 6,)))
HEX4 (DerefOf (Index (PBIF, 7,)))
HEX4 (DerefOf (Index (PBIF, 8,)))
Method (_BST, 0, NotSerialized)
Store (STAT, Index (PBST, 0,))
Store (PRAT, Index (PBST, 1,))
Store (RCAP, Index (PBST, 2,))
Store (PVOL, Index (PBST, 3,))
HEX4 (DerefOf (Index (PBST, 0,)))
HEX4 (DerefOf (Index (PBST, 1,)))
HEX4 (DerefOf (Index (PBST, 2,)))
HEX4 (DerefOf (Index (PBST, 3,)))
Name (_PCL, Package (0x01)
Method (_PSR, 0, NotSerialized)
Method (_STA, 0, NotSerialized)
// PCI0 current resource settings
Name (CRS, ResourceTemplate ()
WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode,
IO (Decode16, 0x0CF8, 0x0CF8, 0x01, 0x08)
WordIO (ResourceProducer, MinFixed, MaxFixed,
WordIO (ResourceProducer, MinFixed, MaxFixed,
/* Taken from ACPI faq (with some modifications) */
DwordMemory( // descriptor for video RAM behind ISA bus
ResourceProducer, // bit 0 of general flags is 0
MinFixed, // Range is fixed
MaxFixed, // Range is Fixed
0x00000000, // Granularity
0x00000000, // Translation
0x00020000 // Range Length
DwordMemory( // Consumed-and-produced resource
ResourceProducer, // bit 0 of general flags is 0
PosDecode, // positive Decode
MinFixed, // Range is fixed
MaxFixed, // Range is fixed
0x00000000, // Granularity
0x00000000, // Min (calculated dynamically)
0xffdfffff, // Max = 4GB - 2MB
0x00000000, // Translation
0xdfdfffff, // Range Length (calculated
, // Optional field left blank
, // Optional field left blank
MEM3 // Name declaration for this
Method (_CRS, 0, NotSerialized)
Subtract (0xffe00000, RAMT, RAMR)
// Fields within PIIX3 configuration[0x60..0x63] with
Name (BUFA, ResourceTemplate ()
IRQ (Level, ActiveLow, Shared) {15}
CreateWordField (BUFA, 0x01, ICRS)
// Generic status of IRQ routing entry
Method (LSTA, 1, NotSerialized)
// Generic "current resource settings" for routing entry
Method (LCRS, 1, NotSerialized)
ShiftLeft (0x01, Local0, ICRS)
// Generic "set resource settings" for routing entry
Method (LSRS, 1, NotSerialized)
CreateWordField (Arg0, 0x01, ISRS)
FindSetRightBit (ISRS, Local0)
Return (Decrement (Local0))
// Generic "disable" for routing entry
Method (LDIS, 1, NotSerialized)
Name (_HID, EisaId ("PNP0C0F"))
Method (_STA, 0, NotSerialized)
// Possible resource settings
Method (_PRS, 0, NotSerialized)
Method (_DIS, 0, NotSerialized)
Store (LDIS (PIRA), PIRA)
// Current resource settings
Method (_CRS, 0, NotSerialized)
Method (_SRS, 1, NotSerialized)
Store (LSRS (Arg0), PIRA)
Name (_HID, EisaId ("PNP0C0F"))
Method (_STA, 0, NotSerialized)
Method (_PRS, 0, NotSerialized)
Method (_DIS, 0, NotSerialized)
Store (LDIS (PIRB), PIRB)
Method (_CRS, 0, NotSerialized)
Method (_SRS, 1, NotSerialized)
Store (LSRS (Arg0), PIRB)
Name (_HID, EisaId ("PNP0C0F"))
Method (_STA, 0, NotSerialized)
Method (_PRS, 0, NotSerialized)
Method (_DIS, 0, NotSerialized)
Store (LDIS (PIRC), PIRC)
Method (_CRS, 0, NotSerialized)
Method (_SRS, 1, NotSerialized)
Store (LSRS (Arg0), PIRC)
Name (_HID, EisaId ("PNP0C0F"))
Method (_STA, 0, NotSerialized)
Method (_PRS, 0, NotSerialized)
Method (_DIS, 0, NotSerialized)
Store (LDIS (PIRA), PIRD)
Method (_CRS, 0, NotSerialized)
Method (_SRS, 1, NotSerialized)
Store (LSRS (Arg0), PIRD)
Method (_PTS, 1, NotSerialized)
DBG ("Prepare to sleep: ")