aboutsummaryrefslogtreecommitdiff
path: root/compiler/dttable.c
diff options
context:
space:
mode:
authorJung-uk Kim <jkim@FreeBSD.org>2010-07-06 17:18:05 +0000
committerJung-uk Kim <jkim@FreeBSD.org>2010-07-06 17:18:05 +0000
commit6d31afa8e3ab79bfa6c97c341af73f4fc093351a (patch)
tree514e3ade7be23ac83127870abf009b5e5ae1d36f /compiler/dttable.c
parentf2bf96d30fe08965ffd53a28099131ac030e43d5 (diff)
Import ACPICA 20100702.vendor/acpica/20100702
Notes
Notes: svn path=/vendor-sys/acpica/dist/; revision=209734 svn path=/vendor-sys/acpica/20100702/; revision=209735; tag=vendor/acpica/20100702
Diffstat (limited to 'compiler/dttable.c')
-rw-r--r--compiler/dttable.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/compiler/dttable.c b/compiler/dttable.c
index 2ab6b9ef6612..863fa23d8437 100644
--- a/compiler/dttable.c
+++ b/compiler/dttable.c
@@ -264,10 +264,13 @@ DtCompileRsdp (
DT_FIELD **PFieldList)
{
DT_SUBTABLE *Subtable;
- ACPI_TABLE_RSDP *Table;
+ ACPI_TABLE_RSDP *Rsdp;
+ ACPI_RSDP_EXTENSION *RsdpExtension;
ACPI_STATUS Status;
+ /* Compile the "common" RSDP (ACPI 1.0) */
+
Status = DtCompileTable (PFieldList, AcpiDmTableInfoRsdp1,
&Gbl_RootTable, TRUE);
if (ACPI_FAILURE (Status))
@@ -275,11 +278,13 @@ DtCompileRsdp (
return (Status);
}
- Table = ACPI_CAST_PTR (ACPI_TABLE_RSDP, Gbl_RootTable->Buffer);
- DtSetTableChecksum (&Table->Checksum);
+ Rsdp = ACPI_CAST_PTR (ACPI_TABLE_RSDP, Gbl_RootTable->Buffer);
+ DtSetTableChecksum (&Rsdp->Checksum);
- if (Table->Revision > 0)
+ if (Rsdp->Revision > 0)
{
+ /* Compile the "extended" part of the RSDP as a subtable */
+
Status = DtCompileTable (PFieldList, AcpiDmTableInfoRsdp2,
&Subtable, TRUE);
if (ACPI_FAILURE (Status))
@@ -288,7 +293,12 @@ DtCompileRsdp (
}
DtInsertSubtable (Gbl_RootTable, Subtable);
- DtSetTableChecksum (&Table->ExtendedChecksum);
+
+ /* Set length and extended checksum for entire RSDP */
+
+ RsdpExtension = ACPI_CAST_PTR (ACPI_RSDP_EXTENSION, Subtable->Buffer);
+ RsdpExtension->Length = Gbl_RootTable->Length + Subtable->Length;
+ DtSetTableChecksum (&RsdpExtension->ExtendedChecksum);
}
return (AE_OK);