diff options
author | jkim <jkim@FreeBSD.org> | 2011-03-17 00:29:53 +0000 |
---|---|---|
committer | jkim <jkim@FreeBSD.org> | 2011-03-17 00:29:53 +0000 |
commit | 69fd3173b85e09555e751babb9f17e078aa7038c (patch) | |
tree | fe5f720ee49b8903a9521b4bfb2be2eccb814c80 /sys/contrib/dev/acpica/compiler/dttable.c | |
parent | 3929b790ffa5d9dc6f772c0b8aa93519bfd2d61a (diff) | |
download | FreeBSD-src-69fd3173b85e09555e751babb9f17e078aa7038c.zip FreeBSD-src-69fd3173b85e09555e751babb9f17e078aa7038c.tar.gz |
Merge ACPICA 20110316.
Diffstat (limited to 'sys/contrib/dev/acpica/compiler/dttable.c')
-rw-r--r-- | sys/contrib/dev/acpica/compiler/dttable.c | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/sys/contrib/dev/acpica/compiler/dttable.c b/sys/contrib/dev/acpica/compiler/dttable.c index 8938e2d..8b5d205 100644 --- a/sys/contrib/dev/acpica/compiler/dttable.c +++ b/sys/contrib/dev/acpica/compiler/dttable.c @@ -1134,6 +1134,75 @@ DtCompileRsdt ( /****************************************************************************** * + * FUNCTION: DtCompileSlic + * + * PARAMETERS: List - Current field list pointer + * + * RETURN: Status + * + * DESCRIPTION: Compile SLIC. + * + *****************************************************************************/ + +ACPI_STATUS +DtCompileSlic ( + void **List) +{ + ACPI_STATUS Status; + DT_SUBTABLE *Subtable; + DT_SUBTABLE *ParentTable; + DT_FIELD **PFieldList = (DT_FIELD **) List; + DT_FIELD *SubtableStart; + ACPI_SLIC_HEADER *SlicHeader; + ACPI_DMTABLE_INFO *InfoTable; + + + while (*PFieldList) + { + SubtableStart = *PFieldList; + Status = DtCompileTable (PFieldList, AcpiDmTableInfoSlicHdr, + &Subtable, TRUE); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + DtPushSubtable (Subtable); + + SlicHeader = ACPI_CAST_PTR (ACPI_SLIC_HEADER, Subtable->Buffer); + + switch (SlicHeader->Type) + { + case ACPI_SLIC_TYPE_PUBLIC_KEY: + InfoTable = AcpiDmTableInfoSlic0; + break; + case ACPI_SLIC_TYPE_WINDOWS_MARKER: + InfoTable = AcpiDmTableInfoSlic1; + break; + default: + DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "SLIC"); + return (AE_ERROR); + } + + Status = DtCompileTable (PFieldList, InfoTable, &Subtable, TRUE); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + DtPopSubtable (); + } + + return (AE_OK); +} + + +/****************************************************************************** + * * FUNCTION: DtCompileSlit * * PARAMETERS: List - Current field list pointer |