[SeaBIOS] iasl compiler/disassembler getting confused by Scope operator
Michael S. Tsirkin
mst at redhat.com
Wed Nov 20 19:08:34 CET 2013
On Wed, Nov 20, 2013 at 05:38:53PM +0000, Moore, Robert wrote:
> OK, can you just send the files?
> thanks
Here goes (3 files attached).
Just run the commands in README to see the problem:
iasl dsdt.dsl
iasl ssdt.dsl
iasl -e DSDT.aml SSDT.aml
iasl SSDT.dsl
#above fails to compile
-------------- next part --------------
iasl dsdt.dsl
iasl ssdt.dsl
iasl -e DSDT.aml SSDT.aml
iasl SSDT.dsl
#above fails to compile
-------------- next part --------------
/*
* Intel ACPI Component Architecture
* AML Disassembler version 20130823-32 [Aug 28 2013]
* Copyright (c) 2000 - 2013 Intel Corporation
*
* Disassembly of DSDT, Mon Oct 7 09:58:06 2013
*
* Original Table Header:
* Signature "DSDT"
* Length 0x00001158 (4440)
* Revision 0x01 **** 32-bit table (V1), no 64-bit math support
* Checksum 0xC6
* OEM ID "BXPC"
* OEM Table ID "BXDSDT"
* OEM Revision 0x00000001 (1)
* Compiler ID "INTL"
* Compiler Version 0x20130823 (538118179)
*/
DefinitionBlock ("DSDT.aml", "DSDT", 1, "BXPC", "BXDSDT", 0x00000001)
{
External (_SB_.PCI0.PCNT, MethodObj)
External (NTFY, MethodObj)
External (CPON)
External (P0E_, IntObj)
External (P0S_, IntObj)
External (P1E_, IntObj)
External (P1L_, IntObj)
External (P1S_, IntObj)
External (P1V_)
Scope (\)
{
OperationRegion (DBG, SystemIO, 0x0402, One)
Field (DBG, ByteAcc, NoLock, Preserve)
{
DBGB, 8
}
Method (DBUG, 1, NotSerialized)
{
ToHexString (Arg0, Local0)
ToBuffer (Local0, Local0)
Subtract (SizeOf (Local0), One, Local1)
Store (Zero, Local2)
While (LLess (Local2, Local1))
{
Store (DerefOf (Index (Local0, Local2)), DBGB)
Increment (Local2)
}
Store (0x0A, DBGB)
}
}
Scope (_SB)
{
Device (PCI0)
{
Name (_HID, EisaId ("PNP0A03")) // _HID: Hardware ID
Name (_ADR, Zero) // _ADR: Address
Name (_UID, One) // _UID: Unique ID
}
}
Scope (_SB.PCI0)
{
Device (ISA)
{
Name (_ADR, 0x00010000) // _ADR: Address
OperationRegion (P40C, PCI_Config, 0x60, 0x04)
Name (FDEN, One)
}
}
Scope (_SB.PCI0)
{
OperationRegion (PCST, SystemIO, 0xAE00, 0x08)
Field (PCST, DWordAcc, NoLock, WriteAsZeros)
{
PCIU, 32,
PCID, 32
}
OperationRegion (SEJ, SystemIO, 0xAE08, 0x04)
Field (SEJ, DWordAcc, NoLock, WriteAsZeros)
{
B0EJ, 32
}
OperationRegion (BNMR, SystemIO, 0xAE10, 0x04)
Field (BNMR, DWordAcc, NoLock, WriteAsZeros)
{
BNUM, 32
}
Mutex (BLCK, 0x00)
Method (PCEJ, 2, NotSerialized)
{
Acquire (BLCK, 0xFFFF)
Store (Arg0, BNUM)
Store (ShiftLeft (One, Arg1), B0EJ)
Release (BLCK)
Return (Zero)
}
}
Scope (_GPE)
{
Name (_HID, "ACPI0006") // _HID: Hardware ID
Method (_L00, 0, NotSerialized) // _Lxx: Level-Triggered GPE
{
}
Method (_E01, 0, NotSerialized) // _Exx: Edge-Triggered GPE
{
Acquire (\_SB.PCI0.BLCK, 0xFFFF)
\_SB.PCI0.PCNT ()
Release (\_SB.PCI0.BLCK)
}
}
}
-------------- next part --------------
/*
* Intel ACPI Component Architecture
* AML Disassembler version 20130823-32 [Aug 28 2013]
* Copyright (c) 2000 - 2013 Intel Corporation
*
* Disassembly of SSDT, Mon Oct 7 09:48:29 2013
*
* Original Table Header:
* Signature "SSDT"
* Length 0x00000FE0 (4064)
* Revision 0x01
* Checksum 0x9F
* OEM ID "BOCHS "
* OEM Table ID "BXPCSSDT"
* OEM Revision 0x00000001 (1)
* Compiler ID "BXPC"
* Compiler Version 0x00000001 (1)
*/
DefinitionBlock ("SSDT.aml", "SSDT", 1, "BOCHS ", "BXPCSSDT", 0x00000001)
{
External (_SB_.PCI0, DeviceObj)
External (_SB_.PCI0.ISA_, DeviceObj)
External (BNUM, FieldUnitObj)
External (CPEJ, MethodObj) // 2 Arguments
External (CPMA, MethodObj) // 1 Arguments
External (CPST, MethodObj) // 1 Arguments
External (PCEJ, MethodObj) // 2 Arguments
External (PCID, FieldUnitObj)
External (PCIU, FieldUnitObj)
Scope (\)
{
Name (P0S, 0x80000000)
Name (P0E, 0xFEBFFFFF)
Name (P1V, 0x00)
Name (P1S, Buffer (0x08)
{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
})
Name (P1E, Buffer (0x08)
{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
})
Name (P1L, Buffer (0x08)
{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
})
}
Scope (\)
{
Name (_S3, Package (0x04) // _S3_: S3 System State
{
One,
One,
Zero,
Zero
})
Name (_S4, Package (0x04) // _S4_: S4 System State
{
0x02,
0x02,
Zero,
Zero
})
Name (_S5, Package (0x04) // _S5_: S5 System State
{
Zero,
Zero,
Zero,
Zero
})
}
Scope (\_SB.PCI0.ISA)
{
Device (PEVT)
{
Name (_HID, "QEMU0001") // _HID: Hardware ID
Name (PEST, 0x0000)
OperationRegion (PEOR, SystemIO, PEST, One)
Field (PEOR, ByteAcc, NoLock, Preserve)
{
PEPT, 8
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
Store (PEST, Local0)
If (LEqual (Local0, Zero))
{
Return (Zero)
}
Else
{
Return (0x0F)
}
}
Method (RDPT, 0, NotSerialized)
{
Store (PEPT, Local0)
Return (Local0)
}
Method (WRPT, 1, NotSerialized)
{
Store (Arg0, PEPT)
}
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{
IO (Decode16,
0x0000, // Range Minimum
0x0000, // Range Maximum
0x01, // Alignment
0x01, // Length
_Y03)
})
CreateWordField (_CRS, \_SB.PCI0.ISA.PEVT._Y03._MIN, IOMN) // _MIN: Minimum Base Address
CreateWordField (_CRS, \_SB.PCI0.ISA.PEVT._Y03._MAX, IOMX) // _MAX: Maximum Base Address
Method (_INI, 0, NotSerialized) // _INI: Initialize
{
Store (PEST, IOMN)
Store (PEST, IOMX)
}
}
}
Scope (_SB)
{
Scope (PCI0)
{
Name (BSEL, Zero)
Device (S18)
{
Name (_SUN, 0x03) // _SUN: Slot User Number
Name (_ADR, 0x00030000) // _ADR: Address
Method (_EJ0, 1, NotSerialized) // _EJx: Eject Device
{
PCEJ (BSEL, _SUN)
}
}
Method (DVNT, 2, NotSerialized)
{
If (And (Arg0, 0x08))
{
Notify (S18, Arg1)
}
}
Method (PCNT, 0, NotSerialized)
{
Store (Zero, BNUM)
DVNT (PCIU, One)
DVNT (PCID, 0x03)
^S20.PCNT ()
}
Device (S20)
{
Name (_SUN, 0x04) // _SUN: Slot User Number
Name (_ADR, 0x00040000) // _ADR: Address
Name (BSEL, One)
Method (PCNT, 0, NotSerialized)
{
Store (One, BNUM)
}
}
}
}
}
More information about the SeaBIOS
mailing list