Blame big-endian-dmtbdump2.patch

8992cb4
Index: acpica-unix2-20200528/source/common/dmtbdump2.c
d7f8eec
===================================================================
8992cb4
--- acpica-unix2-20200528.orig/source/common/dmtbdump2.c
8992cb4
+++ acpica-unix2-20200528/source/common/dmtbdump2.c
d7f8eec
@@ -75,16 +75,23 @@ AcpiDmDumpIort (
d7f8eec
     ACPI_IORT_SMMU          *IortSmmu = NULL;
d7f8eec
     UINT32                  Offset;
d7f8eec
     UINT32                  NodeOffset;
d7f8eec
+    UINT16                  NodeLength;
d7f8eec
     UINT32                  Length;
d7f8eec
     ACPI_DMTABLE_INFO       *InfoTable;
d7f8eec
     char                    *String;
d7f8eec
     UINT32                  i;
d7f8eec
     UINT32                  MappingByteLength;
d7f8eec
+    UINT32                  TableLen;
d7f8eec
+    UINT32                  ItsCount;
d7f8eec
+    UINT32                  MappingCount;
d7f8eec
+    UINT32                  CtxIntCount;
d7f8eec
+    UINT32                  PmuIntCount;
d7f8eec
 
d7f8eec
 
d7f8eec
     /* Main table */
d7f8eec
 
d7f8eec
-    Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoIort);
d7f8eec
+    ACPI_MOVE_32_TO_32(&TableLen, &Table->Length);
d7f8eec
+    Status = AcpiDmDumpTable (TableLen, 0, Table, 0, AcpiDmTableInfoIort);
d7f8eec
     if (ACPI_FAILURE (Status))
d7f8eec
     {
d7f8eec
         return;
d7f8eec
@@ -95,18 +102,19 @@ AcpiDmDumpIort (
d7f8eec
 
d7f8eec
     /* Dump the OptionalPadding (optional) */
d7f8eec
 
d7f8eec
-    if (Iort->NodeOffset > Offset)
d7f8eec
+    ACPI_MOVE_32_TO_32(&NodeOffset, &Iort->NodeOffset);
d7f8eec
+    if (NodeOffset > Offset)
d7f8eec
     {
d7f8eec
-        Status = AcpiDmDumpTable (Table->Length, Offset, Table,
d7f8eec
-            Iort->NodeOffset - Offset, AcpiDmTableInfoIortPad);
d7f8eec
+        Status = AcpiDmDumpTable (TableLen, Offset, Table,
d7f8eec
+            NodeOffset - Offset, AcpiDmTableInfoIortPad);
d7f8eec
         if (ACPI_FAILURE (Status))
d7f8eec
         {
d7f8eec
             return;
d7f8eec
         }
d7f8eec
     }
d7f8eec
 
d7f8eec
-    Offset = Iort->NodeOffset;
d7f8eec
-    while (Offset < Table->Length)
d7f8eec
+    ACPI_MOVE_32_TO_32(&Offset, &Iort->NodeOffset);
d7f8eec
+    while (Offset < TableLen)
d7f8eec
     {
d7f8eec
         /* Common subtable header */
d7f8eec
 
d7f8eec
@@ -142,7 +150,8 @@ AcpiDmDumpIort (
d7f8eec
         case ACPI_IORT_NODE_PCI_ROOT_COMPLEX:
d7f8eec
 
d7f8eec
             InfoTable = AcpiDmTableInfoIort2;
d7f8eec
-            Length = IortNode->Length - NodeOffset;
d7f8eec
+	    ACPI_MOVE_16_TO_16(&NodeLength, &IortNode->Length);
d7f8eec
+            Length = NodeLength - NodeOffset;
d7f8eec
             break;
d7f8eec
 
d7f8eec
         case ACPI_IORT_NODE_SMMU:
d7f8eec
@@ -155,7 +164,8 @@ AcpiDmDumpIort (
d7f8eec
         case ACPI_IORT_NODE_SMMU_V3:
d7f8eec
 
d7f8eec
             InfoTable = AcpiDmTableInfoIort4;
d7f8eec
-            Length = IortNode->Length - NodeOffset;
d7f8eec
+	    ACPI_MOVE_16_TO_16(&NodeLength, &IortNode->Length);
d7f8eec
+            Length = NodeLength - NodeOffset;
d7f8eec
             break;
d7f8eec
 
d7f8eec
         case ACPI_IORT_NODE_PMCG:
d7f8eec
@@ -171,7 +181,8 @@ AcpiDmDumpIort (
d7f8eec
 
d7f8eec
             /* Attempt to continue */
d7f8eec
 
d7f8eec
-            if (!IortNode->Length)
d7f8eec
+	    ACPI_MOVE_16_TO_16(&NodeLength, &IortNode->Length);
d7f8eec
+            if (!NodeLength)
d7f8eec
             {
d7f8eec
                 AcpiOsPrintf ("Invalid zero length IORT node\n");
d7f8eec
                 return;
d7f8eec
@@ -182,7 +193,7 @@ AcpiDmDumpIort (
d7f8eec
         /* Dump the node subtable header */
d7f8eec
 
d7f8eec
         AcpiOsPrintf ("\n");
d7f8eec
-        Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
d7f8eec
+        Status = AcpiDmDumpTable (TableLen, Offset + NodeOffset,
d7f8eec
             ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset),
d7f8eec
             Length, InfoTable);
d7f8eec
         if (ACPI_FAILURE (Status))
d7f8eec
@@ -202,9 +213,10 @@ AcpiDmDumpIort (
d7f8eec
 
d7f8eec
             if (IortItsGroup)
d7f8eec
             {
d7f8eec
-                for (i = 0; i < IortItsGroup->ItsCount; i++)
d7f8eec
+	        ACPI_MOVE_32_TO_32(&ItsCount, &IortItsGroup->ItsCount);
d7f8eec
+                for (i = 0; i < ItsCount; i++)
d7f8eec
                 {
d7f8eec
-                    Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
d7f8eec
+                    Status = AcpiDmDumpTable (TableLen, Offset + NodeOffset,
d7f8eec
                         ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset),
d7f8eec
                         4, AcpiDmTableInfoIort0a);
d7f8eec
                     if (ACPI_FAILURE (Status))
d7f8eec
@@ -221,12 +233,13 @@ AcpiDmDumpIort (
d7f8eec
 
d7f8eec
             /* Dump the Padding (optional) */
d7f8eec
 
d7f8eec
-            if (IortNode->Length > NodeOffset)
d7f8eec
+	    ACPI_MOVE_16_TO_16(&NodeLength, &IortNode->Length);
d7f8eec
+            if (NodeLength > NodeOffset)
d7f8eec
             {
d7f8eec
                 MappingByteLength =
d7f8eec
                     IortNode->MappingCount * sizeof (ACPI_IORT_ID_MAPPING);
d7f8eec
-                Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
d7f8eec
-                    Table, IortNode->Length - NodeOffset - MappingByteLength,
d7f8eec
+                Status = AcpiDmDumpTable (TableLen, Offset + NodeOffset,
d7f8eec
+                    Table, NodeLength - NodeOffset - MappingByteLength,
d7f8eec
                     AcpiDmTableInfoIort1a);
d7f8eec
                 if (ACPI_FAILURE (Status))
d7f8eec
                 {
d7f8eec
@@ -244,8 +257,8 @@ AcpiDmDumpIort (
d7f8eec
             if (IortSmmu)
d7f8eec
             {
d7f8eec
                 Length = 2 * sizeof (UINT64);
d7f8eec
-                NodeOffset = IortSmmu->GlobalInterruptOffset;
d7f8eec
-                Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
d7f8eec
+                ACPI_MOVE_32_TO_32(&NodeOffset, &IortSmmu->GlobalInterruptOffset);
d7f8eec
+                Status = AcpiDmDumpTable (TableLen, Offset + NodeOffset,
d7f8eec
                     ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset),
d7f8eec
                     Length, AcpiDmTableInfoIort3a);
d7f8eec
                 if (ACPI_FAILURE (Status))
d7f8eec
@@ -253,10 +266,11 @@ AcpiDmDumpIort (
d7f8eec
                     return;
d7f8eec
                 }
d7f8eec
 
d7f8eec
-                NodeOffset = IortSmmu->ContextInterruptOffset;
d7f8eec
-                for (i = 0; i < IortSmmu->ContextInterruptCount; i++)
d7f8eec
+                ACPI_MOVE_32_TO_32(&NodeOffset, &IortSmmu->ContextInterruptOffset);
d7f8eec
+                ACPI_MOVE_32_TO_32(&CtxIntCount, &IortSmmu->ContextInterruptCount);
d7f8eec
+                for (i = 0; i < CtxIntCount; i++)
d7f8eec
                 {
d7f8eec
-                    Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
d7f8eec
+                    Status = AcpiDmDumpTable (TableLen, Offset + NodeOffset,
d7f8eec
                         ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset),
d7f8eec
                         8, AcpiDmTableInfoIort3b);
d7f8eec
                     if (ACPI_FAILURE (Status))
d7f8eec
@@ -267,10 +281,11 @@ AcpiDmDumpIort (
d7f8eec
                     NodeOffset += 8;
d7f8eec
                 }
d7f8eec
 
d7f8eec
-                NodeOffset = IortSmmu->PmuInterruptOffset;
d7f8eec
-                for (i = 0; i < IortSmmu->PmuInterruptCount; i++)
d7f8eec
+                ACPI_MOVE_32_TO_32(&NodeOffset, &IortSmmu->PmuInterruptOffset);
d7f8eec
+                ACPI_MOVE_32_TO_32(&PmuIntCount, &IortSmmu->PmuInterruptCount);
d7f8eec
+                for (i = 0; i < PmuIntCount; i++)
d7f8eec
                 {
d7f8eec
-                    Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
d7f8eec
+                    Status = AcpiDmDumpTable (TableLen, Offset + NodeOffset,
d7f8eec
                         ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset),
d7f8eec
                         8, AcpiDmTableInfoIort3c);
d7f8eec
                     if (ACPI_FAILURE (Status))
d7f8eec
@@ -290,12 +305,13 @@ AcpiDmDumpIort (
d7f8eec
 
d7f8eec
         /* Dump the ID mappings */
d7f8eec
 
d7f8eec
-        NodeOffset = IortNode->MappingOffset;
d7f8eec
-        for (i = 0; i < IortNode->MappingCount; i++)
d7f8eec
+        ACPI_MOVE_32_TO_32(&NodeOffset, &IortNode->MappingOffset);
d7f8eec
+        ACPI_MOVE_32_TO_32(&MappingCount, &IortNode->MappingCount);
d7f8eec
+        for (i = 0; i < MappingCount; i++)
d7f8eec
         {
d7f8eec
             AcpiOsPrintf ("\n");
d7f8eec
             Length = sizeof (ACPI_IORT_ID_MAPPING);
d7f8eec
-            Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
d7f8eec
+            Status = AcpiDmDumpTable (TableLen, Offset + NodeOffset,
d7f8eec
                 ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset),
d7f8eec
                 Length, AcpiDmTableInfoIortMap);
d7f8eec
             if (ACPI_FAILURE (Status))
d7f8eec
@@ -309,7 +325,8 @@ AcpiDmDumpIort (
d7f8eec
 NextSubtable:
d7f8eec
         /* Point to next node subtable */
d7f8eec
 
d7f8eec
-        Offset += IortNode->Length;
d7f8eec
+        ACPI_MOVE_16_TO_16(&NodeLength, &IortNode->Length);
d7f8eec
+        Offset += NodeLength;
d7f8eec
     }
d7f8eec
 }
d7f8eec
 
d7f8eec
@@ -340,11 +357,14 @@ AcpiDmDumpIvrs (
d7f8eec
     ACPI_IVRS_DE_HEADER     *DeviceEntry;
d7f8eec
     ACPI_IVRS_HEADER        *Subtable;
d7f8eec
     ACPI_DMTABLE_INFO       *InfoTable;
d7f8eec
+    UINT32		    Length;
d7f8eec
+    UINT16		    SubLength;
d7f8eec
 
d7f8eec
 
d7f8eec
     /* Main table */
d7f8eec
 
d7f8eec
-    Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoIvrs);
d7f8eec
+    ACPI_MOVE_32_TO_32(&Length, &Table->Length);
d7f8eec
+    Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoIvrs);
d7f8eec
     if (ACPI_FAILURE (Status))
d7f8eec
     {
d7f8eec
         return;
d7f8eec
@@ -353,13 +373,14 @@ AcpiDmDumpIvrs (
d7f8eec
     /* Subtables */
d7f8eec
 
d7f8eec
     Subtable = ACPI_ADD_PTR (ACPI_IVRS_HEADER, Table, Offset);
d7f8eec
-    while (Offset < Table->Length)
d7f8eec
+    while (Offset < Length)
d7f8eec
     {
d7f8eec
         /* Common subtable header */
d7f8eec
 
d7f8eec
         AcpiOsPrintf ("\n");
d7f8eec
-        Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
d7f8eec
-            Subtable->Length, AcpiDmTableInfoIvrsHdr);
d7f8eec
+        ACPI_MOVE_16_TO_16(&SubLength, &Subtable->Length);
d7f8eec
+        Status = AcpiDmDumpTable (Length, Offset, Subtable,
d7f8eec
+            SubLength, AcpiDmTableInfoIvrsHdr);
d7f8eec
         if (ACPI_FAILURE (Status))
d7f8eec
         {
d7f8eec
             return;
b549117
@@ -391,7 +412,7 @@ AcpiDmDumpIvrs (
d7f8eec
 
d7f8eec
             /* Attempt to continue */
d7f8eec
 
d7f8eec
-            if (!Subtable->Length)
d7f8eec
+            if (!SubLength)
d7f8eec
             {
d7f8eec
                 AcpiOsPrintf ("Invalid zero length subtable\n");
d7f8eec
                 return;
b549117
@@ -402,8 +423,8 @@ AcpiDmDumpIvrs (
d7f8eec
         /* Dump the subtable */
d7f8eec
 
d7f8eec
         AcpiOsPrintf ("\n");
d7f8eec
-        Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
d7f8eec
-            Subtable->Length, InfoTable);
d7f8eec
+        Status = AcpiDmDumpTable (Length, Offset, Subtable,
d7f8eec
+            SubLength, InfoTable);
d7f8eec
         if (ACPI_FAILURE (Status))
d7f8eec
         {
d7f8eec
             return;
8992cb4
@@ -429,7 +450,7 @@ AcpiDmDumpIvrs (
b549117
                     sizeof (ACPI_IVRS_HARDWARE2));
b549117
             }
d7f8eec
 
d7f8eec
-            while (EntryOffset < (Offset + Subtable->Length))
d7f8eec
+            while (EntryOffset < (Offset + SubLength))
d7f8eec
             {
d7f8eec
                 AcpiOsPrintf ("\n");
d7f8eec
                 /*
8992cb4
@@ -491,7 +512,7 @@ AcpiDmDumpIvrs (
d7f8eec
 
d7f8eec
                 /* Dump the Device Entry */
d7f8eec
 
d7f8eec
-                Status = AcpiDmDumpTable (Table->Length, EntryOffset,
d7f8eec
+                Status = AcpiDmDumpTable (Length, EntryOffset,
d7f8eec
                     DeviceEntry, EntryLength, InfoTable);
d7f8eec
                 if (ACPI_FAILURE (Status))
d7f8eec
                 {
8992cb4
@@ -507,8 +528,8 @@ AcpiDmDumpIvrs (
d7f8eec
 NextSubtable:
d7f8eec
         /* Point to next subtable */
d7f8eec
 
d7f8eec
-        Offset += Subtable->Length;
d7f8eec
-        Subtable = ACPI_ADD_PTR (ACPI_IVRS_HEADER, Subtable, Subtable->Length);
d7f8eec
+        Offset += SubLength;
d7f8eec
+        Subtable = ACPI_ADD_PTR (ACPI_IVRS_HEADER, Subtable, SubLength);
d7f8eec
     }
d7f8eec
 }
d7f8eec
 
8992cb4
@@ -534,7 +555,7 @@ AcpiDmDumpLpit (
d7f8eec
 {
d7f8eec
     ACPI_STATUS             Status;
d7f8eec
     ACPI_LPIT_HEADER        *Subtable;
d7f8eec
-    UINT32                  Length = Table->Length;
d7f8eec
+    UINT32                  Length;
d7f8eec
     UINT32                  Offset = sizeof (ACPI_TABLE_LPIT);
d7f8eec
     ACPI_DMTABLE_INFO       *InfoTable;
d7f8eec
     UINT32                  SubtableLength;
8992cb4
@@ -542,8 +563,9 @@ AcpiDmDumpLpit (
d7f8eec
 
d7f8eec
     /* Subtables */
d7f8eec
 
d7f8eec
+    ACPI_MOVE_32_TO_32(&Length, &Table->Length);
d7f8eec
     Subtable = ACPI_ADD_PTR (ACPI_LPIT_HEADER, Table, Offset);
d7f8eec
-    while (Offset < Table->Length)
d7f8eec
+    while (Offset < Length)
d7f8eec
     {
d7f8eec
         /* Common subtable header */
d7f8eec
 
8992cb4
@@ -607,13 +629,14 @@ AcpiDmDumpMadt (
d7f8eec
 {
d7f8eec
     ACPI_STATUS             Status;
d7f8eec
     ACPI_SUBTABLE_HEADER    *Subtable;
d7f8eec
-    UINT32                  Length = Table->Length;
d7f8eec
+    UINT32                  Length;
d7f8eec
     UINT32                  Offset = sizeof (ACPI_TABLE_MADT);
d7f8eec
     ACPI_DMTABLE_INFO       *InfoTable;
d7f8eec
 
d7f8eec
 
d7f8eec
     /* Main table */
d7f8eec
 
d7f8eec
+    ACPI_MOVE_32_TO_32(&Length, &Table->Length);
d7f8eec
     Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoMadt);
d7f8eec
     if (ACPI_FAILURE (Status))
d7f8eec
     {
8992cb4
@@ -623,7 +646,7 @@ AcpiDmDumpMadt (
d7f8eec
     /* Subtables */
d7f8eec
 
d7f8eec
     Subtable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Table, Offset);
d7f8eec
-    while (Offset < Table->Length)
d7f8eec
+    while (Offset < Length)
d7f8eec
     {
d7f8eec
         /* Common subtable header */
d7f8eec
 
8992cb4
@@ -769,11 +792,13 @@ AcpiDmDumpMcfg (
d7f8eec
     ACPI_STATUS             Status;
d7f8eec
     UINT32                  Offset = sizeof (ACPI_TABLE_MCFG);
d7f8eec
     ACPI_MCFG_ALLOCATION    *Subtable;
d7f8eec
+    UINT32		    Len;
d7f8eec
 
d7f8eec
 
d7f8eec
     /* Main table */
d7f8eec
 
d7f8eec
-    Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMcfg);
d7f8eec
+    ACPI_MOVE_32_TO_32(&Len, &Table->Length);
d7f8eec
+    Status = AcpiDmDumpTable (Len, 0, Table, 0, AcpiDmTableInfoMcfg);
d7f8eec
     if (ACPI_FAILURE (Status))
d7f8eec
     {
d7f8eec
         return;
8992cb4
@@ -782,17 +807,17 @@ AcpiDmDumpMcfg (
d7f8eec
     /* Subtables */
d7f8eec
 
d7f8eec
     Subtable = ACPI_ADD_PTR (ACPI_MCFG_ALLOCATION, Table, Offset);
d7f8eec
-    while (Offset < Table->Length)
d7f8eec
+    while (Offset < Len)
d7f8eec
     {
d7f8eec
-        if (Offset + sizeof (ACPI_MCFG_ALLOCATION) > Table->Length)
d7f8eec
+        if (Offset + sizeof (ACPI_MCFG_ALLOCATION) > Len)
d7f8eec
         {
d7f8eec
             AcpiOsPrintf ("Warning: there are %u invalid trailing bytes\n",
d7f8eec
-                (UINT32) sizeof (ACPI_MCFG_ALLOCATION) - (Offset - Table->Length));
d7f8eec
+                (UINT32) sizeof (ACPI_MCFG_ALLOCATION) - (Offset - Len));
d7f8eec
             return;
d7f8eec
         }
d7f8eec
 
d7f8eec
         AcpiOsPrintf ("\n");
d7f8eec
-        Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
d7f8eec
+        Status = AcpiDmDumpTable (Len, Offset, Subtable,
d7f8eec
             sizeof (ACPI_MCFG_ALLOCATION), AcpiDmTableInfoMcfg0);
d7f8eec
         if (ACPI_FAILURE (Status))
d7f8eec
         {
8992cb4
@@ -826,6 +851,7 @@ AcpiDmDumpMpst (
d7f8eec
 {
d7f8eec
     ACPI_STATUS             Status;
d7f8eec
     UINT32                  Offset = sizeof (ACPI_TABLE_MPST);
d7f8eec
+    ACPI_TABLE_MPST	    *Mpst;
d7f8eec
     ACPI_MPST_POWER_NODE    *Subtable0;
d7f8eec
     ACPI_MPST_POWER_STATE   *Subtable0A;
d7f8eec
     ACPI_MPST_COMPONENT     *Subtable0B;
8992cb4
@@ -834,11 +860,13 @@ AcpiDmDumpMpst (
d7f8eec
     UINT16                  SubtableCount;
d7f8eec
     UINT32                  PowerStateCount;
d7f8eec
     UINT32                  ComponentCount;
d7f8eec
+    UINT32		    Length;
d7f8eec
 
d7f8eec
 
d7f8eec
     /* Main table */
d7f8eec
 
d7f8eec
-    Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMpst);
d7f8eec
+    ACPI_MOVE_32_TO_32(&Length, &Table->Length);
d7f8eec
+    Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoMpst);
d7f8eec
     if (ACPI_FAILURE (Status))
d7f8eec
     {
d7f8eec
         return;
8992cb4
@@ -846,13 +874,14 @@ AcpiDmDumpMpst (
d7f8eec
 
d7f8eec
     /* Subtable: Memory Power Node(s) */
d7f8eec
 
d7f8eec
-    SubtableCount = (ACPI_CAST_PTR (ACPI_TABLE_MPST, Table))->PowerNodeCount;
d7f8eec
+    Mpst = ACPI_CAST_PTR (ACPI_TABLE_MPST, Table);
d7f8eec
+    ACPI_MOVE_16_TO_16(&SubtableCount, &Mpst->PowerNodeCount);
d7f8eec
     Subtable0 = ACPI_ADD_PTR (ACPI_MPST_POWER_NODE, Table, Offset);
d7f8eec
 
d7f8eec
-    while ((Offset < Table->Length) && SubtableCount)
d7f8eec
+    while ((Offset < Length) && SubtableCount)
d7f8eec
     {
d7f8eec
         AcpiOsPrintf ("\n");
d7f8eec
-        Status = AcpiDmDumpTable (Table->Length, Offset, Subtable0,
d7f8eec
+        Status = AcpiDmDumpTable (Length, Offset, Subtable0,
d7f8eec
             sizeof (ACPI_MPST_POWER_NODE), AcpiDmTableInfoMpst0);
d7f8eec
         if (ACPI_FAILURE (Status))
d7f8eec
         {
8992cb4
@@ -861,8 +890,8 @@ AcpiDmDumpMpst (
d7f8eec
 
d7f8eec
         /* Extract the sub-subtable counts */
d7f8eec
 
d7f8eec
-        PowerStateCount = Subtable0->NumPowerStates;
d7f8eec
-        ComponentCount = Subtable0->NumPhysicalComponents;
d7f8eec
+        ACPI_MOVE_32_TO_32(&PowerStateCount, &Subtable0->NumPowerStates);
d7f8eec
+        ACPI_MOVE_32_TO_32(&ComponentCount, &Subtable0->NumPhysicalComponents);
d7f8eec
         Offset += sizeof (ACPI_MPST_POWER_NODE);
d7f8eec
 
d7f8eec
         /* Sub-subtables - Memory Power State Structure(s) */
8992cb4
@@ -873,7 +902,7 @@ AcpiDmDumpMpst (
d7f8eec
         while (PowerStateCount)
d7f8eec
         {
d7f8eec
             AcpiOsPrintf ("\n");
d7f8eec
-            Status = AcpiDmDumpTable (Table->Length, Offset, Subtable0A,
d7f8eec
+            Status = AcpiDmDumpTable (Length, Offset, Subtable0A,
d7f8eec
                 sizeof (ACPI_MPST_POWER_STATE), AcpiDmTableInfoMpst0A);
d7f8eec
             if (ACPI_FAILURE (Status))
d7f8eec
             {
8992cb4
@@ -883,7 +912,7 @@ AcpiDmDumpMpst (
d7f8eec
             Subtable0A++;
d7f8eec
             PowerStateCount--;
d7f8eec
             Offset += sizeof (ACPI_MPST_POWER_STATE);
d7f8eec
-       }
d7f8eec
+        }
d7f8eec
 
d7f8eec
         /* Sub-subtables - Physical Component ID Structure(s) */
d7f8eec
 
8992cb4
@@ -896,7 +925,7 @@ AcpiDmDumpMpst (
d7f8eec
 
d7f8eec
         while (ComponentCount)
d7f8eec
         {
d7f8eec
-            Status = AcpiDmDumpTable (Table->Length, Offset, Subtable0B,
d7f8eec
+            Status = AcpiDmDumpTable (Length, Offset, Subtable0B,
d7f8eec
                 sizeof (ACPI_MPST_COMPONENT), AcpiDmTableInfoMpst0B);
d7f8eec
             if (ACPI_FAILURE (Status))
d7f8eec
             {
8992cb4
@@ -911,17 +940,19 @@ AcpiDmDumpMpst (
d7f8eec
         /* Point to next Memory Power Node subtable */
d7f8eec
 
d7f8eec
         SubtableCount--;
d7f8eec
+        ACPI_MOVE_32_TO_32(&PowerStateCount, &Subtable0->NumPowerStates);
d7f8eec
+        ACPI_MOVE_32_TO_32(&ComponentCount, &Subtable0->NumPhysicalComponents);
d7f8eec
         Subtable0 = ACPI_ADD_PTR (ACPI_MPST_POWER_NODE, Subtable0,
d7f8eec
             sizeof (ACPI_MPST_POWER_NODE) +
d7f8eec
-            (sizeof (ACPI_MPST_POWER_STATE) * Subtable0->NumPowerStates) +
d7f8eec
-            (sizeof (ACPI_MPST_COMPONENT) * Subtable0->NumPhysicalComponents));
d7f8eec
+            (sizeof (ACPI_MPST_POWER_STATE) * PowerStateCount) +
d7f8eec
+            (sizeof (ACPI_MPST_COMPONENT) * ComponentCount));
d7f8eec
     }
d7f8eec
 
d7f8eec
     /* Subtable: Count of Memory Power State Characteristic structures */
d7f8eec
 
d7f8eec
     AcpiOsPrintf ("\n");
d7f8eec
     Subtable1 = ACPI_CAST_PTR (ACPI_MPST_DATA_HDR, Subtable0);
d7f8eec
-    Status = AcpiDmDumpTable (Table->Length, Offset, Subtable1,
d7f8eec
+    Status = AcpiDmDumpTable (Length, Offset, Subtable1,
d7f8eec
         sizeof (ACPI_MPST_DATA_HDR), AcpiDmTableInfoMpst1);
d7f8eec
     if (ACPI_FAILURE (Status))
d7f8eec
     {
8992cb4
@@ -936,10 +967,10 @@ AcpiDmDumpMpst (
d7f8eec
     Subtable2 = ACPI_ADD_PTR (ACPI_MPST_POWER_DATA, Subtable1,
d7f8eec
         sizeof (ACPI_MPST_DATA_HDR));
d7f8eec
 
d7f8eec
-    while ((Offset < Table->Length) && SubtableCount)
d7f8eec
+    while ((Offset < Length) && SubtableCount)
d7f8eec
     {
d7f8eec
         AcpiOsPrintf ("\n");
d7f8eec
-        Status = AcpiDmDumpTable (Table->Length, Offset, Subtable2,
d7f8eec
+        Status = AcpiDmDumpTable (Length, Offset, Subtable2,
d7f8eec
             sizeof (ACPI_MPST_POWER_DATA), AcpiDmTableInfoMpst2);
d7f8eec
         if (ACPI_FAILURE (Status))
d7f8eec
         {
8992cb4
@@ -972,11 +1003,13 @@ AcpiDmDumpMsct (
d7f8eec
     ACPI_STATUS             Status;
d7f8eec
     UINT32                  Offset = sizeof (ACPI_TABLE_MSCT);
d7f8eec
     ACPI_MSCT_PROXIMITY     *Subtable;
d7f8eec
+    UINT32		    Length;
d7f8eec
 
d7f8eec
 
d7f8eec
     /* Main table */
d7f8eec
 
d7f8eec
-    Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMsct);
d7f8eec
+    ACPI_MOVE_32_TO_32(&Length, &Table->Length);
d7f8eec
+    Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoMsct);
d7f8eec
     if (ACPI_FAILURE (Status))
d7f8eec
     {
d7f8eec
         return;
8992cb4
@@ -985,12 +1018,12 @@ AcpiDmDumpMsct (
d7f8eec
     /* Subtables */
d7f8eec
 
d7f8eec
     Subtable = ACPI_ADD_PTR (ACPI_MSCT_PROXIMITY, Table, Offset);
d7f8eec
-    while (Offset < Table->Length)
d7f8eec
+    while (Offset < Length)
d7f8eec
     {
d7f8eec
         /* Common subtable header */
d7f8eec
 
d7f8eec
         AcpiOsPrintf ("\n");
d7f8eec
-        Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
d7f8eec
+        Status = AcpiDmDumpTable (Length, Offset, Subtable,
d7f8eec
             sizeof (ACPI_MSCT_PROXIMITY), AcpiDmTableInfoMsct0);
d7f8eec
         if (ACPI_FAILURE (Status))
d7f8eec
         {
8992cb4
@@ -1025,11 +1058,13 @@ AcpiDmDumpMtmr (
d7f8eec
     ACPI_STATUS             Status;
d7f8eec
     UINT32                  Offset = sizeof (ACPI_TABLE_MTMR);
d7f8eec
     ACPI_MTMR_ENTRY         *Subtable;
d7f8eec
+    UINT32		    Length;
d7f8eec
 
d7f8eec
 
d7f8eec
     /* Main table */
d7f8eec
 
d7f8eec
-    Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMtmr);
d7f8eec
+    ACPI_MOVE_32_TO_32(&Length, &Table->Length);
d7f8eec
+    Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoMtmr);
d7f8eec
     if (ACPI_FAILURE (Status))
d7f8eec
     {
d7f8eec
         return;
8992cb4
@@ -1038,12 +1073,12 @@ AcpiDmDumpMtmr (
d7f8eec
     /* Subtables */
d7f8eec
 
d7f8eec
     Subtable = ACPI_ADD_PTR (ACPI_MTMR_ENTRY, Table, Offset);
d7f8eec
-    while (Offset < Table->Length)
d7f8eec
+    while (Offset < Length)
d7f8eec
     {
d7f8eec
         /* Common subtable header */
d7f8eec
 
d7f8eec
         AcpiOsPrintf ("\n");
d7f8eec
-        Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
d7f8eec
+        Status = AcpiDmDumpTable (Length, Offset, Subtable,
d7f8eec
             sizeof (ACPI_MTMR_ENTRY), AcpiDmTableInfoMtmr0);
d7f8eec
         if (ACPI_FAILURE (Status))
d7f8eec
         {
8992cb4
@@ -1085,11 +1120,17 @@ AcpiDmDumpNfit (
d7f8eec
     ACPI_NFIT_SMBIOS        *SmbiosInfo = NULL;
d7f8eec
     ACPI_NFIT_FLUSH_ADDRESS *Hint = NULL;
d7f8eec
     UINT32                  i;
d7f8eec
+    UINT32                  TableLength;
d7f8eec
+    UINT16                  SubLength;
d7f8eec
+    UINT16                  SubType;
d7f8eec
+    UINT32                  Count;
d7f8eec
+    UINT16                  Count16;
d7f8eec
 
d7f8eec
 
d7f8eec
     /* Main table */
d7f8eec
 
d7f8eec
-    Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoNfit);
d7f8eec
+    ACPI_MOVE_32_TO_32(&TableLength, &Table->Length);
d7f8eec
+    Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoNfit);
d7f8eec
     if (ACPI_FAILURE (Status))
d7f8eec
     {
d7f8eec
         return;
8992cb4
@@ -1098,19 +1139,21 @@ AcpiDmDumpNfit (
d7f8eec
     /* Subtables */
d7f8eec
 
d7f8eec
     Subtable = ACPI_ADD_PTR (ACPI_NFIT_HEADER, Table, Offset);
d7f8eec
-    while (Offset < Table->Length)
d7f8eec
+    while (Offset < TableLength)
d7f8eec
     {
d7f8eec
         /* NFIT subtable header */
d7f8eec
 
d7f8eec
         AcpiOsPrintf ("\n");
d7f8eec
-        Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
d7f8eec
-            Subtable->Length, AcpiDmTableInfoNfitHdr);
d7f8eec
+	ACPI_MOVE_16_TO_16(&SubLength, &Subtable->Length);
d7f8eec
+        Status = AcpiDmDumpTable (TableLength, Offset, Subtable,
d7f8eec
+            SubLength, AcpiDmTableInfoNfitHdr);
d7f8eec
         if (ACPI_FAILURE (Status))
d7f8eec
         {
d7f8eec
             return;
d7f8eec
         }
d7f8eec
 
d7f8eec
-        switch (Subtable->Type)
d7f8eec
+	ACPI_MOVE_16_TO_16(&SubType, &Subtable->Type);
d7f8eec
+        switch (SubType)
d7f8eec
         {
d7f8eec
         case ACPI_NFIT_TYPE_SYSTEM_ADDRESS:
d7f8eec
 
8992cb4
@@ -1165,7 +1208,7 @@ AcpiDmDumpNfit (
d7f8eec
 
d7f8eec
             /* Attempt to continue */
d7f8eec
 
d7f8eec
-            if (!Subtable->Length)
d7f8eec
+            if (!SubLength)
d7f8eec
             {
d7f8eec
                 AcpiOsPrintf ("Invalid zero length subtable\n");
d7f8eec
                 return;
8992cb4
@@ -1174,8 +1217,8 @@ AcpiDmDumpNfit (
d7f8eec
         }
d7f8eec
 
d7f8eec
         AcpiOsPrintf ("\n");
d7f8eec
-        Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
d7f8eec
-            Subtable->Length, InfoTable);
d7f8eec
+        Status = AcpiDmDumpTable (TableLength, Offset, Subtable,
d7f8eec
+            SubLength, InfoTable);
d7f8eec
         if (ACPI_FAILURE (Status))
d7f8eec
         {
d7f8eec
             return;
8992cb4
@@ -1183,14 +1226,15 @@ AcpiDmDumpNfit (
d7f8eec
 
d7f8eec
         /* Per-subtable variable-length fields */
d7f8eec
 
d7f8eec
-        switch (Subtable->Type)
d7f8eec
+        switch (SubType)
d7f8eec
         {
d7f8eec
         case ACPI_NFIT_TYPE_INTERLEAVE:
d7f8eec
 
d7f8eec
             Interleave = ACPI_CAST_PTR (ACPI_NFIT_INTERLEAVE, Subtable);
d7f8eec
-            for (i = 0; i < Interleave->LineCount; i++)
d7f8eec
+	    ACPI_MOVE_32_TO_32(&Count, &Interleave->LineCount);
d7f8eec
+            for (i = 0; i < Count; i++)
d7f8eec
             {
d7f8eec
-                Status = AcpiDmDumpTable (Table->Length, Offset + FieldOffset,
d7f8eec
+                Status = AcpiDmDumpTable (TableLength, Offset + FieldOffset,
d7f8eec
                     &Interleave->LineOffset[i],
d7f8eec
                     sizeof (UINT32), AcpiDmTableInfoNfit2a);
d7f8eec
                 if (ACPI_FAILURE (Status))
8992cb4
@@ -1204,12 +1248,11 @@ AcpiDmDumpNfit (
d7f8eec
 
d7f8eec
         case ACPI_NFIT_TYPE_SMBIOS:
d7f8eec
 
d7f8eec
-            Length = Subtable->Length -
d7f8eec
-                sizeof (ACPI_NFIT_SMBIOS) + sizeof (UINT8);
d7f8eec
+            Length = SubLength - sizeof (ACPI_NFIT_SMBIOS) + sizeof (UINT8);
d7f8eec
 
d7f8eec
             if (Length)
d7f8eec
             {
d7f8eec
-                Status = AcpiDmDumpTable (Table->Length,
d7f8eec
+                Status = AcpiDmDumpTable (TableLength,
d7f8eec
                     sizeof (ACPI_NFIT_SMBIOS) - sizeof (UINT8),
d7f8eec
                     SmbiosInfo,
d7f8eec
                     Length, AcpiDmTableInfoNfit3a);
8992cb4
@@ -1224,9 +1267,10 @@ AcpiDmDumpNfit (
d7f8eec
         case ACPI_NFIT_TYPE_FLUSH_ADDRESS:
d7f8eec
 
d7f8eec
             Hint = ACPI_CAST_PTR (ACPI_NFIT_FLUSH_ADDRESS, Subtable);
d7f8eec
-            for (i = 0; i < Hint->HintCount; i++)
d7f8eec
+	    ACPI_MOVE_16_TO_16(&Count16, &Hint->HintCount);
d7f8eec
+            for (i = 0; i < Count16; i++)
d7f8eec
             {
d7f8eec
-                Status = AcpiDmDumpTable (Table->Length, Offset + FieldOffset,
d7f8eec
+                Status = AcpiDmDumpTable (TableLength, Offset + FieldOffset,
d7f8eec
                     &Hint->HintAddress[i],
d7f8eec
                     sizeof (UINT64), AcpiDmTableInfoNfit6a);
d7f8eec
                 if (ACPI_FAILURE (Status))
8992cb4
@@ -1245,8 +1289,8 @@ AcpiDmDumpNfit (
d7f8eec
 NextSubtable:
d7f8eec
         /* Point to next subtable */
d7f8eec
 
d7f8eec
-        Offset += Subtable->Length;
d7f8eec
-        Subtable = ACPI_ADD_PTR (ACPI_NFIT_HEADER, Subtable, Subtable->Length);
d7f8eec
+        Offset += SubLength;
d7f8eec
+        Subtable = ACPI_ADD_PTR (ACPI_NFIT_HEADER, Subtable, SubLength);
d7f8eec
     }
d7f8eec
 }
d7f8eec
 
8992cb4
@@ -1271,12 +1315,13 @@ AcpiDmDumpPcct (
d7f8eec
     ACPI_STATUS             Status;
d7f8eec
     ACPI_PCCT_SUBSPACE      *Subtable;
d7f8eec
     ACPI_DMTABLE_INFO       *InfoTable;
d7f8eec
-    UINT32                  Length = Table->Length;
d7f8eec
+    UINT32                  Length;
d7f8eec
     UINT32                  Offset = sizeof (ACPI_TABLE_PCCT);
d7f8eec
 
d7f8eec
 
d7f8eec
     /* Main table */
d7f8eec
 
d7f8eec
+    ACPI_MOVE_32_TO_32(&Length, &Table->Length);
d7f8eec
     Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoPcct);
d7f8eec
     if (ACPI_FAILURE (Status))
d7f8eec
     {
8992cb4
@@ -1286,7 +1331,7 @@ AcpiDmDumpPcct (
d7f8eec
     /* Subtables */
d7f8eec
 
d7f8eec
     Subtable = ACPI_ADD_PTR (ACPI_PCCT_SUBSPACE, Table, Offset);
d7f8eec
-    while (Offset < Table->Length)
d7f8eec
+    while (Offset < Length)
d7f8eec
     {
d7f8eec
         /* Common subtable header */
d7f8eec
 
8992cb4
@@ -1426,16 +1471,21 @@ AcpiDmDumpPmtt (
d7f8eec
     ACPI_PMTT_HEADER        *MemSubtable;
d7f8eec
     ACPI_PMTT_HEADER        *DimmSubtable;
d7f8eec
     ACPI_PMTT_DOMAIN        *DomainArray;
d7f8eec
-    UINT32                  Length = Table->Length;
d7f8eec
+    UINT32                  Length;
d7f8eec
     UINT32                  Offset = sizeof (ACPI_TABLE_PMTT);
d7f8eec
     UINT32                  MemOffset;
d7f8eec
     UINT32                  DimmOffset;
d7f8eec
     UINT32                  DomainOffset;
d7f8eec
-    UINT32                  DomainCount;
d7f8eec
+    UINT16                  DomainCount;
d7f8eec
+    UINT16		    SubLength;
d7f8eec
+    UINT16		    Tmp16;
d7f8eec
+    UINT16		    MemLength;
d7f8eec
+    UINT16		    DimmLength;
d7f8eec
 
d7f8eec
 
d7f8eec
     /* Main table */
d7f8eec
 
d7f8eec
+    ACPI_MOVE_32_TO_32(&Length, &Table->Length);
d7f8eec
     Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoPmtt);
d7f8eec
     if (ACPI_FAILURE (Status))
d7f8eec
     {
8992cb4
@@ -1445,13 +1495,14 @@ AcpiDmDumpPmtt (
d7f8eec
     /* Subtables */
d7f8eec
 
d7f8eec
     Subtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, Table, Offset);
d7f8eec
-    while (Offset < Table->Length)
d7f8eec
+    while (Offset < Length)
d7f8eec
     {
d7f8eec
         /* Common subtable header */
d7f8eec
 
d7f8eec
         AcpiOsPrintf ("\n");
d7f8eec
+        ACPI_MOVE_16_TO_16(&SubLength, &Subtable->Length);
d7f8eec
         Status = AcpiDmDumpTable (Length, Offset, Subtable,
d7f8eec
-            Subtable->Length, AcpiDmTableInfoPmttHdr);
d7f8eec
+            SubLength, AcpiDmTableInfoPmttHdr);
d7f8eec
         if (ACPI_FAILURE (Status))
d7f8eec
         {
d7f8eec
             return;
8992cb4
@@ -1470,7 +1521,7 @@ AcpiDmDumpPmtt (
d7f8eec
         /* Dump the fixed-length portion of the subtable */
d7f8eec
 
d7f8eec
         Status = AcpiDmDumpTable (Length, Offset, Subtable,
d7f8eec
-            Subtable->Length, AcpiDmTableInfoPmtt0);
d7f8eec
+            SubLength, AcpiDmTableInfoPmtt0);
d7f8eec
         if (ACPI_FAILURE (Status))
d7f8eec
         {
d7f8eec
             return;
8992cb4
@@ -1482,15 +1533,16 @@ AcpiDmDumpPmtt (
d7f8eec
         MemSubtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, Subtable,
d7f8eec
             sizeof (ACPI_PMTT_SOCKET));
d7f8eec
 
d7f8eec
-        while (((Offset + MemOffset) < Table->Length) &&
d7f8eec
-            (MemOffset < Subtable->Length))
d7f8eec
+        while (((Offset + MemOffset) < Length) &&
d7f8eec
+            (MemOffset < SubLength))
d7f8eec
         {
d7f8eec
             /* Common subtable header */
d7f8eec
 
d7f8eec
             AcpiOsPrintf ("\n");
d7f8eec
+	    ACPI_MOVE_16_TO_16(&MemLength, &MemSubtable->Length);
d7f8eec
             Status = AcpiDmDumpTable (Length,
d7f8eec
                 Offset + MemOffset, MemSubtable,
d7f8eec
-                MemSubtable->Length, AcpiDmTableInfoPmttHdr);
d7f8eec
+                MemLength, AcpiDmTableInfoPmttHdr);
d7f8eec
             if (ACPI_FAILURE (Status))
d7f8eec
             {
d7f8eec
                 return;
8992cb4
@@ -1510,7 +1562,7 @@ AcpiDmDumpPmtt (
d7f8eec
 
d7f8eec
             Status = AcpiDmDumpTable (Length,
d7f8eec
                 Offset + MemOffset, MemSubtable,
d7f8eec
-                MemSubtable->Length, AcpiDmTableInfoPmtt1);
d7f8eec
+                MemLength, AcpiDmTableInfoPmtt1);
d7f8eec
             if (ACPI_FAILURE (Status))
d7f8eec
             {
d7f8eec
                 return;
8992cb4
@@ -1518,13 +1570,14 @@ AcpiDmDumpPmtt (
d7f8eec
 
d7f8eec
             /* Walk the variable count of proximity domains */
d7f8eec
 
d7f8eec
-            DomainCount = ((ACPI_PMTT_CONTROLLER *) MemSubtable)->DomainCount;
d7f8eec
+	    Tmp16 = ((ACPI_PMTT_CONTROLLER *) MemSubtable)->DomainCount;
d7f8eec
+            ACPI_MOVE_16_TO_16(&DomainCount, &Tmp16);
d7f8eec
             DomainOffset = sizeof (ACPI_PMTT_CONTROLLER);
d7f8eec
             DomainArray = ACPI_ADD_PTR (ACPI_PMTT_DOMAIN, MemSubtable,
d7f8eec
                 sizeof (ACPI_PMTT_CONTROLLER));
d7f8eec
 
d7f8eec
-            while (((Offset + MemOffset + DomainOffset) < Table->Length) &&
d7f8eec
-                ((MemOffset + DomainOffset) < Subtable->Length) &&
d7f8eec
+            while (((Offset + MemOffset + DomainOffset) < Length) &&
d7f8eec
+                ((MemOffset + DomainOffset) < SubLength) &&
d7f8eec
                 DomainCount)
d7f8eec
             {
d7f8eec
                 Status = AcpiDmDumpTable (Length,
8992cb4
@@ -1552,15 +1605,16 @@ AcpiDmDumpPmtt (
d7f8eec
             DimmSubtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, MemSubtable,
d7f8eec
                 DomainOffset);
d7f8eec
 
d7f8eec
-            while (((Offset + MemOffset + DimmOffset) < Table->Length) &&
d7f8eec
-                (DimmOffset < MemSubtable->Length))
d7f8eec
+            while (((Offset + MemOffset + DimmOffset) < Length) &&
d7f8eec
+                (DimmOffset < MemLength))
d7f8eec
             {
d7f8eec
                 /* Common subtable header */
d7f8eec
 
d7f8eec
                 AcpiOsPrintf ("\n");
d7f8eec
+		ACPI_MOVE_16_TO_16(&DimmLength, &DimmSubtable->Length);
d7f8eec
                 Status = AcpiDmDumpTable (Length,
d7f8eec
                     Offset + MemOffset + DimmOffset, DimmSubtable,
d7f8eec
-                    DimmSubtable->Length, AcpiDmTableInfoPmttHdr);
d7f8eec
+                    DimmLength, AcpiDmTableInfoPmttHdr);
d7f8eec
                 if (ACPI_FAILURE (Status))
d7f8eec
                 {
d7f8eec
                     return;
8992cb4
@@ -1580,7 +1634,7 @@ AcpiDmDumpPmtt (
d7f8eec
 
d7f8eec
                 Status = AcpiDmDumpTable (Length,
d7f8eec
                     Offset + MemOffset + DimmOffset, DimmSubtable,
d7f8eec
-                    DimmSubtable->Length, AcpiDmTableInfoPmtt2);
d7f8eec
+                    DimmLength, AcpiDmTableInfoPmtt2);
d7f8eec
                 if (ACPI_FAILURE (Status))
d7f8eec
                 {
d7f8eec
                     return;
8992cb4
@@ -1588,23 +1642,22 @@ AcpiDmDumpPmtt (
d7f8eec
 
d7f8eec
                 /* Point to next DIMM subtable */
d7f8eec
 
d7f8eec
-                DimmOffset += DimmSubtable->Length;
d7f8eec
+                DimmOffset += DimmLength;
d7f8eec
                 DimmSubtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER,
d7f8eec
-                    DimmSubtable, DimmSubtable->Length);
d7f8eec
+                    DimmSubtable, DimmLength);
d7f8eec
             }
d7f8eec
 
d7f8eec
             /* Point to next Controller subtable */
d7f8eec
 
d7f8eec
-            MemOffset += MemSubtable->Length;
d7f8eec
+            MemOffset += MemLength;
d7f8eec
             MemSubtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER,
d7f8eec
-                MemSubtable, MemSubtable->Length);
d7f8eec
+                MemSubtable, MemLength);
d7f8eec
         }
d7f8eec
 
d7f8eec
         /* Point to next Socket subtable */
d7f8eec
 
d7f8eec
-        Offset += Subtable->Length;
d7f8eec
-        Subtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER,
d7f8eec
-            Subtable, Subtable->Length);
d7f8eec
+        Offset += SubLength;
d7f8eec
+        Subtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, Subtable, SubLength);
d7f8eec
     }
d7f8eec
 }
d7f8eec
 
8992cb4
@@ -1765,6 +1818,8 @@ AcpiDmDumpS3pt (
d7f8eec
     ACPI_FPDT_HEADER        *Subtable;
d7f8eec
     ACPI_DMTABLE_INFO       *InfoTable;
d7f8eec
     ACPI_TABLE_S3PT         *S3ptTable = ACPI_CAST_PTR (ACPI_TABLE_S3PT, Tables);
d7f8eec
+    UINT32		    Length;
d7f8eec
+    UINT16                  SubType;
d7f8eec
 
d7f8eec
 
d7f8eec
     /* Main table */
8992cb4
@@ -1775,20 +1830,22 @@ AcpiDmDumpS3pt (
d7f8eec
         return 0;
d7f8eec
     }
d7f8eec
 
d7f8eec
+    ACPI_MOVE_32_TO_32(&Length, &S3ptTable->Length);
d7f8eec
     Subtable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, S3ptTable, Offset);
d7f8eec
-    while (Offset < S3ptTable->Length)
d7f8eec
+    while (Offset < Length)
d7f8eec
     {
d7f8eec
         /* Common subtable header */
d7f8eec
 
d7f8eec
         AcpiOsPrintf ("\n");
d7f8eec
-        Status = AcpiDmDumpTable (S3ptTable->Length, Offset, Subtable,
d7f8eec
+        Status = AcpiDmDumpTable (Length, Offset, Subtable,
d7f8eec
             Subtable->Length, AcpiDmTableInfoS3ptHdr);
d7f8eec
         if (ACPI_FAILURE (Status))
d7f8eec
         {
d7f8eec
             return 0;
d7f8eec
         }
d7f8eec
 
d7f8eec
-        switch (Subtable->Type)
d7f8eec
+        ACPI_MOVE_16_TO_16(&SubType, &Subtable->Type);
d7f8eec
+        switch (SubType)
d7f8eec
         {
d7f8eec
         case ACPI_S3PT_TYPE_RESUME:
d7f8eec
 
8992cb4
@@ -1803,7 +1860,7 @@ AcpiDmDumpS3pt (
d7f8eec
         default:
d7f8eec
 
d7f8eec
             AcpiOsPrintf ("\n**** Unknown S3PT subtable type 0x%X\n",
d7f8eec
-                Subtable->Type);
d7f8eec
+                SubType);
d7f8eec
 
d7f8eec
             /* Attempt to continue */
d7f8eec
 
8992cb4
@@ -1816,7 +1873,7 @@ AcpiDmDumpS3pt (
d7f8eec
         }
d7f8eec
 
d7f8eec
         AcpiOsPrintf ("\n");
d7f8eec
-        Status = AcpiDmDumpTable (S3ptTable->Length, Offset, Subtable,
d7f8eec
+        Status = AcpiDmDumpTable (Length, Offset, Subtable,
d7f8eec
             Subtable->Length, InfoTable);
d7f8eec
         if (ACPI_FAILURE (Status))
d7f8eec
         {