--- /dev/null
+diff -up acpica-unix2-20140424/source/compiler/aslcodegen.c.debian-big_endian acpica-unix2-20140424/source/compiler/aslcodegen.c
+--- acpica-unix2-20140424/source/compiler/aslcodegen.c.debian-big_endian 2014-04-24 11:48:59.000000000 -0400
++++ acpica-unix2-20140424/source/compiler/aslcodegen.c 2014-06-06 20:43:34.711825238 -0400
+@@ -246,16 +246,12 @@ CgWriteAmlOpcode (
+ ACPI_PARSE_OBJECT *Op)
+ {
+ UINT8 PkgLenFirstByte;
+- UINT32 i;
+- union {
+- UINT16 Opcode;
+- UINT8 OpcodeBytes[2];
+- } Aml;
+- union {
+- UINT32 Len;
+- UINT8 LenBytes[4];
+- } PkgLen;
+-
++ UINT8 Byte;
++ UINT16 Word;
++ UINT32 DWord;
++ UINT64 QWord;
++ UINT16 AmlOpcode;
++ UINT32 PkgLen;
+
+ /* We expect some DEFAULT_ARGs, just ignore them */
+
+@@ -278,51 +265,52 @@ CgWriteAmlOpcode (
+
+ /* Special opcodes for within a field definition */
+
+- Aml.Opcode = AML_FIELD_OFFSET_OP;
++ AmlOpcode = AML_FIELD_OFFSET_OP;
+ break;
+
+ case AML_INT_ACCESSFIELD_OP:
+
+- Aml.Opcode = AML_FIELD_ACCESS_OP;
++ AmlOpcode = AML_FIELD_ACCESS_OP;
+ break;
+
+ case AML_INT_CONNECTION_OP:
+
+- Aml.Opcode = AML_FIELD_CONNECTION_OP;
++ AmlOpcode = AML_FIELD_CONNECTION_OP;
+ break;
+
+ default:
+
+- Aml.Opcode = Op->Asl.AmlOpcode;
++ AmlOpcode = Op->Asl.AmlOpcode;
+ break;
+ }
+
+
+- switch (Aml.Opcode)
++ switch (AmlOpcode)
+ {
+ case AML_PACKAGE_LENGTH:
+
+ /* Value is the length to be encoded (Used in field definitions) */
+
+- PkgLen.Len = (UINT32) Op->Asl.Value.Integer;
++ PkgLen = (UINT32) Op->Asl.Value.Integer;
+ break;
+
+ default:
+
+ /* Check for two-byte opcode */
+
+- if (Aml.Opcode > 0x00FF)
++ if (AmlOpcode > 0x00FF)
+ {
+ /* Write the high byte first */
+-
+- CgLocalWriteAmlData (Op, &Aml.OpcodeBytes[1], 1);
++ Byte = ACPI_HIBYTE(AmlOpcode);
++ CgLocalWriteAmlData (Op, &Byte, 1);
+ }
+
+- CgLocalWriteAmlData (Op, &Aml.OpcodeBytes[0], 1);
++ Byte = ACPI_LOBYTE(AmlOpcode);
++ CgLocalWriteAmlData (Op, &Byte, 1);
+
+ /* Subtreelength doesn't include length of package length bytes */
+
+- PkgLen.Len = Op->Asl.AmlSubtreeLength + Op->Asl.AmlPkgLenBytes;
++ PkgLen = Op->Asl.AmlSubtreeLength + Op->Asl.AmlPkgLenBytes;
+ break;
+ }
+
+@@ -333,8 +322,8 @@ CgWriteAmlOpcode (
+ if (Op->Asl.AmlPkgLenBytes == 1)
+ {
+ /* Simplest case -- no bytes to follow, just write the count */
+-
+- CgLocalWriteAmlData (Op, &PkgLen.LenBytes[0], 1);
++ Byte = ACPI_LOBYTE(PkgLen);
++ CgLocalWriteAmlData (Op, &Byte, 1);
+ }
+ else if (Op->Asl.AmlPkgLenBytes != 0)
+ {
+@@ -344,7 +333,7 @@ CgWriteAmlOpcode (
+ */
+ PkgLenFirstByte = (UINT8)
+ (((UINT32) (Op->Asl.AmlPkgLenBytes - 1) << 6) |
+- (PkgLen.LenBytes[0] & 0x0F));
++ (PkgLen & 0x0F));
+
+ CgLocalWriteAmlData (Op, &PkgLenFirstByte, 1);
+
+@@ -352,37 +341,44 @@ CgWriteAmlOpcode (
+ * Shift the length over by the 4 bits we just stuffed
+ * in the first byte
+ */
+- PkgLen.Len >>= 4;
++ PkgLen >>= 4;
+
+ /* Now we can write the remaining bytes - either 1, 2, or 3 bytes */
+-
+- for (i = 0; i < (UINT32) (Op->Asl.AmlPkgLenBytes - 1); i++)
++ Byte = ACPI_LOBYTE(PkgLen);
++ CgLocalWriteAmlData (Op, &Byte, 1);
++ if (Op->Asl.AmlPkgLenBytes >= 3)
++ {
++ Byte = ACPI_HIBYTE(PkgLen);
++ CgLocalWriteAmlData (Op, &Byte, 1);
++ }
++ if (Op->Asl.AmlPkgLenBytes >= 4)
+ {
+- CgLocalWriteAmlData (Op, &PkgLen.LenBytes[i], 1);
++ Byte = ACPI_LOBYTE(ACPI_HIWORD(PkgLen));
++ CgLocalWriteAmlData (Op, &Byte, 1);
+ }
+ }
+ }
+
+- switch (Aml.Opcode)
++ switch (AmlOpcode)
+ {
+ case AML_BYTE_OP:
+-
+- CgLocalWriteAmlData (Op, &Op->Asl.Value.Integer, 1);
++ Byte = (UINT8) Op->Asl.Value.Integer;
++ CgLocalWriteAmlData (Op, &Byte, 1);
+ break;
+
+ case AML_WORD_OP:
+-
+- CgLocalWriteAmlData (Op, &Op->Asl.Value.Integer, 2);
++ ACPI_MOVE_64_TO_16(&Word, &Op->Asl.Value.Integer);
++ CgLocalWriteAmlData (Op, &Word, 2);
+ break;
+
+ case AML_DWORD_OP:
+-
+- CgLocalWriteAmlData (Op, &Op->Asl.Value.Integer, 4);
++ ACPI_MOVE_64_TO_32(&DWord, &Op->Asl.Value.Integer);
++ CgLocalWriteAmlData (Op, &DWord, 4);
+ break;
+
+ case AML_QWORD_OP:
+-
+- CgLocalWriteAmlData (Op, &Op->Asl.Value.Integer, 8);
++ ACPI_MOVE_64_TO_64(&QWord, &Op->Asl.Value.Integer);
++ CgLocalWriteAmlData (Op, &QWord, 8);
+ break;
+
+ case AML_STRING_OP:
+@@ -416,6 +412,7 @@ CgWriteTableHeader (
+ ACPI_PARSE_OBJECT *Op)
+ {
+ ACPI_PARSE_OBJECT *Child;
++ UINT32 DWord;
+
+
+ /* AML filename */
+@@ -452,7 +449,7 @@ CgWriteTableHeader (
+ /* OEM Revision */
+
+ Child = Child->Asl.Next;
+- TableHeader.OemRevision = (UINT32) Child->Asl.Value.Integer;
++ ACPI_MOVE_64_TO_32(&TableHeader.OemRevision, &Child->Asl.Value.Integer);
+
+ /* Compiler ID */
+
+@@ -460,11 +457,12 @@ CgWriteTableHeader (
+
+ /* Compiler version */
+
+- TableHeader.AslCompilerRevision = ASL_REVISION;
++ DWord = ASL_REVISION;
++ ACPI_MOVE_32_TO_32(&TableHeader.AslCompilerRevision, &DWord);
+
+ /* Table length. Checksum zero for now, will rewrite later */
+
+- TableHeader.Length = Gbl_TableLength;
++ ACPI_MOVE_32_TO_32(&TableHeader.Length, &Gbl_TableLength);
+ TableHeader.Checksum = 0;
+
+ CgLocalWriteAmlData (Op, &TableHeader, sizeof (ACPI_TABLE_HEADER));
+@@ -528,7 +526,10 @@ CgWriteNode (
+ ACPI_PARSE_OBJECT *Op)
+ {
+ ASL_RESOURCE_NODE *Rnode;
+-
++ UINT8 Byte;
++ UINT16 Word;
++ UINT32 DWord;
++ UINT64 QWord;
+
+ /* Always check for DEFAULT_ARG and other "Noop" nodes */
+ /* TBD: this may not be the best place for this check */
+@@ -546,13 +547,24 @@ CgWriteNode (
+ switch (Op->Asl.AmlOpcode)
+ {
+ case AML_RAW_DATA_BYTE:
++ Byte = (UINT8) Op->Asl.Value.Integer;
++ CgLocalWriteAmlData (Op, &Byte, 1);
++ return;
++
+ case AML_RAW_DATA_WORD:
+- case AML_RAW_DATA_DWORD:
+- case AML_RAW_DATA_QWORD:
++ ACPI_MOVE_64_TO_16(&Word, &Op->Asl.Value.Integer);
++ CgLocalWriteAmlData (Op, &Word, 2);
++ return;
+
+- CgLocalWriteAmlData (Op, &Op->Asl.Value.Integer, Op->Asl.AmlLength);
++ case AML_RAW_DATA_DWORD:
++ ACPI_MOVE_64_TO_32(&DWord, &Op->Asl.Value.Integer);
++ CgLocalWriteAmlData (Op, &DWord, 4);
+ return;
+
++ case AML_RAW_DATA_QWORD:
++ ACPI_MOVE_64_TO_64(&QWord, &Op->Asl.Value.Integer);
++ CgLocalWriteAmlData (Op, &QWord, 8);
++ return;
+
+ case AML_RAW_DATA_BUFFER:
+
+diff -up acpica-unix2-20140424/source/compiler/aslopcodes.c.debian-big_endian acpica-unix2-20140424/source/compiler/aslopcodes.c
+--- acpica-unix2-20140424/source/compiler/aslopcodes.c.debian-big_endian 2014-04-24 11:48:59.000000000 -0400
++++ acpica-unix2-20140424/source/compiler/aslopcodes.c 2014-06-06 20:43:34.711825238 -0400
+@@ -531,6 +479,7 @@ OpcDoUnicode (
+ UINT32 i;
+ UINT8 *AsciiString;
+ UINT16 *UnicodeString;
++ UINT16 UChar;
+ ACPI_PARSE_OBJECT *BufferLengthOp;
+
+
+@@ -557,7 +505,8 @@ OpcDoUnicode (
+
+ for (i = 0; i < Count; i++)
+ {
+- UnicodeString[i] = (UINT16) AsciiString[i];
++ UChar = (UINT16) AsciiString[i];
++ ACPI_MOVE_16_TO_16(&UnicodeString[i], &UChar);
+ }
+
+ /*
+diff -up acpica-unix2-20140424/source/compiler/aslrestype1.c.debian-big_endian acpica-unix2-20140424/source/compiler/aslrestype1.c
+--- acpica-unix2-20140424/source/compiler/aslrestype1.c.debian-big_endian 2014-04-24 11:49:00.000000000 -0400
++++ acpica-unix2-20140424/source/compiler/aslrestype1.c 2014-06-06 20:43:34.711825238 -0400
+@@ -143,6 +148,11 @@ RsDoMemory24Descriptor (
+ ACPI_PARSE_OBJECT *LengthOp = NULL;
+ ASL_RESOURCE_NODE *Rnode;
+ UINT32 CurrentByteOffset;
++ UINT16 Minimum = 0;
++ UINT16 Maximum = 0;
++ UINT16 AddressLength = 0;
++ UINT16 Alignment = 0;
++ UINT16 ResourceLength;
+ UINT32 i;
+
+
+@@ -152,7 +153,8 @@ RsDoMemory24Descriptor (
+
+ Descriptor = Rnode->Buffer;
+ Descriptor->Memory24.DescriptorType = ACPI_RESOURCE_NAME_MEMORY24;
+- Descriptor->Memory24.ResourceLength = 9;
++ ResourceLength = 9;
++ ACPI_MOVE_16_TO_16(&Descriptor->Memory24.ResourceLength, &ResourceLength);
+
+ /* Process all child initialization nodes */
+
+@@ -169,7 +169,7 @@ RsDoMemory24Descriptor (
+
+ case 1: /* Min Address */
+
+- Descriptor->Memory24.Minimum = (UINT16) InitializerOp->Asl.Value.Integer;
++ Minimum = (UINT16) InitializerOp->Asl.Value.Integer;
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.Minimum));
+ MinOp = InitializerOp;
+@@ -177,7 +177,7 @@ RsDoMemory24Descriptor (
+
+ case 2: /* Max Address */
+
+- Descriptor->Memory24.Maximum = (UINT16) InitializerOp->Asl.Value.Integer;
++ Maximum = (UINT16) InitializerOp->Asl.Value.Integer;
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.Maximum));
+ MaxOp = InitializerOp;
+@@ -185,14 +185,14 @@ RsDoMemory24Descriptor (
+
+ case 3: /* Alignment */
+
+- Descriptor->Memory24.Alignment = (UINT16) InitializerOp->Asl.Value.Integer;
++ Alignment = (UINT16) InitializerOp->Asl.Value.Integer;
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_ALIGNMENT,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.Alignment));
+ break;
+
+ case 4: /* Length */
+
+- Descriptor->Memory24.AddressLength = (UINT16) InitializerOp->Asl.Value.Integer;
++ AddressLength = (UINT16) InitializerOp->Asl.Value.Integer;
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.AddressLength));
+ LengthOp = InitializerOp;
+@@ -215,12 +220,17 @@ RsDoMemory24Descriptor (
+ /* Validate the Min/Max/Len/Align values (Alignment==0 means 64K) */
+
+ RsSmallAddressCheck (ACPI_RESOURCE_NAME_MEMORY24,
+- Descriptor->Memory24.Minimum,
+- Descriptor->Memory24.Maximum,
+- Descriptor->Memory24.AddressLength,
+- Descriptor->Memory24.Alignment,
++ Minimum,
++ Maximum,
++ AddressLength,
++ Alignment,
+ MinOp, MaxOp, LengthOp, NULL, Info->DescriptorTypeOp);
+
++ ACPI_MOVE_16_TO_16(&Descriptor->Memory24.Minimum, &Minimum);
++ ACPI_MOVE_16_TO_16(&Descriptor->Memory24.Maximum, &Maximum);
++ ACPI_MOVE_16_TO_16(&Descriptor->Memory24.AddressLength, &AddressLength);
++ ACPI_MOVE_16_TO_16(&Descriptor->Memory24.Alignment, &Alignment);
++
+ return (Rnode);
+ }
+
+@@ -249,6 +254,11 @@ RsDoMemory32Descriptor (
+ ACPI_PARSE_OBJECT *AlignOp = NULL;
+ ASL_RESOURCE_NODE *Rnode;
+ UINT32 CurrentByteOffset;
++ UINT32 Minimum = 0;
++ UINT32 Maximum = 0;
++ UINT32 AddressLength = 0;
++ UINT32 Alignment = 0;
++ UINT16 ResourceLength;
+ UINT32 i;
+
+
+@@ -258,7 +259,8 @@ RsDoMemory32Descriptor (
+
+ Descriptor = Rnode->Buffer;
+ Descriptor->Memory32.DescriptorType = ACPI_RESOURCE_NAME_MEMORY32;
+- Descriptor->Memory32.ResourceLength = 17;
++ ResourceLength = 17;
++ ACPI_MOVE_16_TO_16(&Descriptor->Memory32.ResourceLength, &ResourceLength);
+
+ /* Process all child initialization nodes */
+
+@@ -275,7 +275,7 @@ RsDoMemory32Descriptor (
+
+ case 1: /* Min Address */
+
+- Descriptor->Memory32.Minimum = (UINT32) InitializerOp->Asl.Value.Integer;
++ Minimum = (UINT32) InitializerOp->Asl.Value.Integer;
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.Minimum));
+ MinOp = InitializerOp;
+@@ -283,7 +283,7 @@ RsDoMemory32Descriptor (
+
+ case 2: /* Max Address */
+
+- Descriptor->Memory32.Maximum = (UINT32) InitializerOp->Asl.Value.Integer;
++ Maximum = (UINT32) InitializerOp->Asl.Value.Integer;
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.Maximum));
+ MaxOp = InitializerOp;
+@@ -291,7 +291,7 @@ RsDoMemory32Descriptor (
+
+ case 3: /* Alignment */
+
+- Descriptor->Memory32.Alignment = (UINT32) InitializerOp->Asl.Value.Integer;
++ Alignment = (UINT32) InitializerOp->Asl.Value.Integer;
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_ALIGNMENT,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.Alignment));
+ AlignOp = InitializerOp;
+@@ -299,7 +299,7 @@ RsDoMemory32Descriptor (
+
+ case 4: /* Length */
+
+- Descriptor->Memory32.AddressLength = (UINT32) InitializerOp->Asl.Value.Integer;
++ AddressLength = (UINT32) InitializerOp->Asl.Value.Integer;
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.AddressLength));
+ LengthOp = InitializerOp;
+@@ -322,12 +327,17 @@ RsDoMemory32Descriptor (
+ /* Validate the Min/Max/Len/Align values */
+
+ RsSmallAddressCheck (ACPI_RESOURCE_NAME_MEMORY32,
+- Descriptor->Memory32.Minimum,
+- Descriptor->Memory32.Maximum,
+- Descriptor->Memory32.AddressLength,
+- Descriptor->Memory32.Alignment,
++ Minimum,
++ Maximum,
++ AddressLength,
++ Alignment,
+ MinOp, MaxOp, LengthOp, AlignOp, Info->DescriptorTypeOp);
+
++ ACPI_MOVE_32_TO_32(&Descriptor->Memory32.Minimum, &Minimum);
++ ACPI_MOVE_32_TO_32(&Descriptor->Memory32.Maximum, &Maximum);
++ ACPI_MOVE_32_TO_32(&Descriptor->Memory32.AddressLength, &AddressLength);
++ ACPI_MOVE_32_TO_32(&Descriptor->Memory32.Alignment, &Alignment);
++
+ return (Rnode);
+ }
+
+@@ -352,6 +353,7 @@ RsDoMemory32FixedDescriptor (
+ ACPI_PARSE_OBJECT *InitializerOp;
+ ASL_RESOURCE_NODE *Rnode;
+ UINT32 CurrentByteOffset;
++ UINT16 ResourceLength;
+ UINT32 i;
+
+
+@@ -361,7 +362,8 @@ RsDoMemory32FixedDescriptor (
+
+ Descriptor = Rnode->Buffer;
+ Descriptor->FixedMemory32.DescriptorType = ACPI_RESOURCE_NAME_FIXED_MEMORY32;
+- Descriptor->FixedMemory32.ResourceLength = 9;
++ ResourceLength = 9;
++ ACPI_MOVE_16_TO_16(&Descriptor->FixedMemory32.ResourceLength, &ResourceLength);
+
+ /* Process all child initialization nodes */
+
+@@ -378,14 +380,16 @@ RsDoMemory32FixedDescriptor (
+
+ case 1: /* Address */
+
+- Descriptor->FixedMemory32.Address = (UINT32) InitializerOp->Asl.Value.Integer;
++ ACPI_MOVE_64_TO_32(&Descriptor->FixedMemory32.Address,
++ &InitializerOp->Asl.Value.Integer);
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_BASEADDRESS,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (FixedMemory32.Address));
+ break;
+
+ case 2: /* Length */
+
+- Descriptor->FixedMemory32.AddressLength = (UINT32) InitializerOp->Asl.Value.Integer;
++ ACPI_MOVE_64_TO_32(&Descriptor->FixedMemory32.AddressLength,
++ &InitializerOp->Asl.Value.Integer);
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (FixedMemory32.AddressLength));
+ break;
+diff -up acpica-unix2-20140424/source/compiler/aslrestype1i.c.debian-big_endian acpica-unix2-20140424/source/compiler/aslrestype1i.c
+--- acpica-unix2-20140424/source/compiler/aslrestype1i.c.debian-big_endian 2014-04-24 11:49:00.000000000 -0400
++++ acpica-unix2-20140424/source/compiler/aslrestype1i.c 2014-06-06 20:43:34.711825238 -0400
+@@ -198,6 +200,8 @@ RsDoFixedDmaDescriptor (
+ ACPI_PARSE_OBJECT *InitializerOp;
+ ASL_RESOURCE_NODE *Rnode;
+ UINT32 CurrentByteOffset;
++ UINT16 RequestLines = 0;
++ UINT16 Channels = 0;
+ UINT32 i;
+
+
+@@ -217,14 +217,14 @@ RsDoFixedDmaDescriptor (
+ {
+ case 0: /* DMA Request Lines [WORD] (_DMA) */
+
+- Descriptor->FixedDma.RequestLines = (UINT16) InitializerOp->Asl.Value.Integer;
++ RequestLines = (UINT16) InitializerOp->Asl.Value.Integer;
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_DMA,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (FixedDma.RequestLines));
+ break;
+
+ case 1: /* DMA Channel [WORD] (_TYP) */
+
+- Descriptor->FixedDma.Channels = (UINT16) InitializerOp->Asl.Value.Integer;
++ Channels = (UINT16) InitializerOp->Asl.Value.Integer;
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_DMATYPE,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (FixedDma.Channels));
+ break;
+@@ -249,6 +252,9 @@ RsDoFixedDmaDescriptor (
+ InitializerOp = RsCompleteNodeAndGetNext (InitializerOp);
+ }
+
++ ACPI_MOVE_16_TO_16(&Descriptor->FixedDma.RequestLines, &RequestLines);
++ ACPI_MOVE_16_TO_16(&Descriptor->FixedDma.Channels, &Channels);
++
+ return (Rnode);
+ }
+
+@@ -274,6 +275,7 @@ RsDoFixedIoDescriptor (
+ ACPI_PARSE_OBJECT *AddressOp = NULL;
+ ASL_RESOURCE_NODE *Rnode;
+ UINT32 CurrentByteOffset;
++ UINT16 Address = 0;
+ UINT32 i;
+
+
+@@ -293,8 +292,7 @@ RsDoFixedIoDescriptor (
+ {
+ case 0: /* Base Address */
+
+- Descriptor->FixedIo.Address =
+- (UINT16) InitializerOp->Asl.Value.Integer;
++ Address = (UINT16) InitializerOp->Asl.Value.Integer;
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_BASEADDRESS,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (FixedIo.Address));
+ AddressOp = InitializerOp;
+@@ -324,11 +326,13 @@ RsDoFixedIoDescriptor (
+
+ /* Error checks */
+
+- if (Descriptor->FixedIo.Address > 0x03FF)
++ if (Address > 0x03FF)
+ {
+ AslError (ASL_WARNING, ASL_MSG_ISA_ADDRESS, AddressOp, NULL);
+ }
+
++ ACPI_MOVE_16_TO_16(&Descriptor->FixedIo.Address, &Address);
++
+ return (Rnode);
+ }
+
+@@ -357,6 +359,8 @@ RsDoIoDescriptor (
+ ACPI_PARSE_OBJECT *AlignOp = NULL;
+ ASL_RESOURCE_NODE *Rnode;
+ UINT32 CurrentByteOffset;
++ UINT16 Minimum = 0;
++ UINT16 Maximum = 0;
+ UINT32 i;
+
+
+@@ -383,8 +382,7 @@ RsDoIoDescriptor (
+
+ case 1: /* Min Address */
+
+- Descriptor->Io.Minimum =
+- (UINT16) InitializerOp->Asl.Value.Integer;
++ Minimum = (UINT16) InitializerOp->Asl.Value.Integer;
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Io.Minimum));
+ MinOp = InitializerOp;
+@@ -392,8 +391,7 @@ RsDoIoDescriptor (
+
+ case 2: /* Max Address */
+
+- Descriptor->Io.Maximum =
+- (UINT16) InitializerOp->Asl.Value.Integer;
++ Maximum = (UINT16) InitializerOp->Asl.Value.Integer;
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Io.Maximum));
+ MaxOp = InitializerOp;
+@@ -434,12 +437,15 @@ RsDoIoDescriptor (
+ /* Validate the Min/Max/Len/Align values */
+
+ RsSmallAddressCheck (ACPI_RESOURCE_NAME_IO,
+- Descriptor->Io.Minimum,
+- Descriptor->Io.Maximum,
++ Minimum,
++ Maximum,
+ Descriptor->Io.AddressLength,
+ Descriptor->Io.Alignment,
+ MinOp, MaxOp, LengthOp, AlignOp, Info->DescriptorTypeOp);
+
++ ACPI_MOVE_16_TO_16(&Descriptor->Io.Minimum, &Minimum);
++ ACPI_MOVE_16_TO_16(&Descriptor->Io.Maximum, &Maximum);
++
+ return (Rnode);
+ }
+
+@@ -559,9 +559,9 @@ RsDoIrqDescriptor (
+ InitializerOp = RsCompleteNodeAndGetNext (InitializerOp);
+ }
+
+- /* Now we can set the channel mask */
++ /* Now we can set the interrupt mask */
+
+- Descriptor->Irq.IrqMask = IrqMask;
++ ACPI_MOVE_16_TO_16(&Descriptor->Irq.IrqMask, &IrqMask);
+ return (Rnode);
+ }
+
+@@ -660,6 +660,6 @@ RsDoIrqNoFlagsDescriptor (
+
+ /* Now we can set the interrupt mask */
+
+- Descriptor->Irq.IrqMask = IrqMask;
++ ACPI_MOVE_16_TO_16(&Descriptor->Irq.IrqMask, &IrqMask);
+ return (Rnode);
+ }
+diff -up acpica-unix2-20140424/source/compiler/aslrestype2.c.debian-big_endian acpica-unix2-20140424/source/compiler/aslrestype2.c
+--- acpica-unix2-20140424/source/compiler/aslrestype2.c.debian-big_endian 2014-04-24 11:49:00.000000000 -0400
++++ acpica-unix2-20140424/source/compiler/aslrestype2.c 2014-06-06 20:43:34.711825238 -0400
+@@ -76,6 +77,7 @@ RsDoGeneralRegisterDescriptor (
+ ACPI_PARSE_OBJECT *InitializerOp;
+ ASL_RESOURCE_NODE *Rnode;
+ UINT32 CurrentByteOffset;
++ UINT16 ResourceLength;
+ UINT32 i;
+
+
+@@ -85,7 +87,9 @@ RsDoGeneralRegisterDescriptor (
+
+ Descriptor = Rnode->Buffer;
+ Descriptor->GenericReg.DescriptorType = ACPI_RESOURCE_NAME_GENERIC_REGISTER;
+- Descriptor->GenericReg.ResourceLength = 12;
++ ResourceLength = 12;
++ ACPI_MOVE_16_TO_16(&Descriptor->GenericReg.ResourceLength,
++ &ResourceLength);
+
+ /* Process all child initialization nodes */
+
+@@ -116,7 +117,8 @@ RsDoGeneralRegisterDescriptor (
+
+ case 3: /* Register Address */
+
+- Descriptor->GenericReg.Address = InitializerOp->Asl.Value.Integer;
++ ACPI_MOVE_64_TO_64(&Descriptor->GenericReg.Address,
++ &InitializerOp->Asl.Value.Integer);
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_ADDRESS,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (GenericReg.Address));
+ break;
+@@ -171,6 +172,7 @@ RsDoInterruptDescriptor (
+ AML_RESOURCE *Rover = NULL;
+ ACPI_PARSE_OBJECT *InitializerOp;
+ ASL_RESOURCE_NODE *Rnode;
++ UINT16 ResourceLength = 0;
+ UINT16 StringLength = 0;
+ UINT32 OptionIndex = 0;
+ UINT32 CurrentByteOffset;
+@@ -219,7 +219,7 @@ RsDoInterruptDescriptor (
+ * Initial descriptor length -- may be enlarged if there are
+ * optional fields present
+ */
+- Descriptor->ExtendedIrq.ResourceLength = 2; /* Flags and table length byte */
++ ResourceLength = 2; /* Flags and table length byte */
+ Descriptor->ExtendedIrq.InterruptCount = 0;
+
+ Rover = ACPI_CAST_PTR (AML_RESOURCE,
+@@ -327,10 +328,11 @@ RsDoInterruptDescriptor (
+
+ /* Save the integer and move pointer to the next one */
+
+- Rover->DwordItem = (UINT32) InitializerOp->Asl.Value.Integer;
++ ACPI_MOVE_64_TO_32(&Rover->DwordItem,
++ &InitializerOp->Asl.Value.Integer);
+ Rover = ACPI_ADD_PTR (AML_RESOURCE, &(Rover->DwordItem), 4);
+ Descriptor->ExtendedIrq.InterruptCount++;
+- Descriptor->ExtendedIrq.ResourceLength += 4;
++ ResourceLength += 4;
+
+ /* Case 7: First interrupt number in list */
+
+@@ -366,7 +366,7 @@ RsDoInterruptDescriptor (
+ {
+ Rover->ByteItem = ResSourceIndex;
+ Rover = ACPI_ADD_PTR (AML_RESOURCE, &(Rover->ByteItem), 1);
+- Descriptor->ExtendedIrq.ResourceLength += 1;
++ ResourceLength += 1;
+ }
+
+ /* Add optional ResSource string if present */
+@@ -378,13 +379,14 @@ RsDoInterruptDescriptor (
+ Rover = ACPI_ADD_PTR (
+ AML_RESOURCE, &(Rover->ByteItem), StringLength);
+
+- Descriptor->ExtendedIrq.ResourceLength = (UINT16)
+- (Descriptor->ExtendedIrq.ResourceLength + StringLength);
++ ResourceLength = (UINT16) (ResourceLength + StringLength);
+ }
+
+ Rnode->BufferLength = (ASL_RESDESC_OFFSET (ExtendedIrq.Interrupts[0]) -
+ ASL_RESDESC_OFFSET (ExtendedIrq.DescriptorType))
+ + OptionIndex + StringLength;
++ ACPI_MOVE_16_TO_16(&Descriptor->ExtendedIrq.ResourceLength,
++ &ResourceLength);
+ return (Rnode);
+ }
+
+@@ -432,7 +432,7 @@ RsDoVendorLargeDescriptor (
+
+ Descriptor = Rnode->Buffer;
+ Descriptor->VendorLarge.DescriptorType = ACPI_RESOURCE_NAME_VENDOR_LARGE;
+- Descriptor->VendorLarge.ResourceLength = (UINT16) i;
++ ACPI_MOVE_32_TO_16(&Descriptor->VendorLarge.ResourceLength, &i);
+
+ /* Point to end-of-descriptor for vendor data */
+
+diff -up acpica-unix2-20140424/source/compiler/aslrestype2d.c.debian-big_endian acpica-unix2-20140424/source/compiler/aslrestype2d.c
+--- acpica-unix2-20140424/source/compiler/aslrestype2d.c.debian-big_endian 2014-04-24 11:49:00.000000000 -0400
++++ acpica-unix2-20140424/source/compiler/aslrestype2d.c 2014-06-06 20:43:34.721825238 -0400
+@@ -79,7 +85,13 @@ RsDoDwordIoDescriptor (
+ ACPI_PARSE_OBJECT *GranOp = NULL;
+ ASL_RESOURCE_NODE *Rnode;
+ UINT16 StringLength = 0;
++ UINT16 ResourceLength = 0;
+ UINT32 OptionIndex = 0;
++ UINT32 Minimum = 0;
++ UINT32 Maximum = 0;
++ UINT32 AddressLength = 0;
++ UINT32 Granularity = 0;
++ UINT32 TranslationOffset = 0;
+ UINT8 *OptionalFields;
+ UINT32 CurrentByteOffset;
+ UINT32 i;
+@@ -102,8 +101,7 @@ RsDoDwordIoDescriptor (
+ * optional fields present
+ */
+ OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS32);
+- Descriptor->Address32.ResourceLength = (UINT16)
+- (sizeof (AML_RESOURCE_ADDRESS32) -
++ ResourceLength = (UINT16) (sizeof (AML_RESOURCE_ADDRESS32) -
+ sizeof (AML_RESOURCE_LARGE_HEADER));
+
+ /* Process all child initialization nodes */
+@@ -147,8 +146,7 @@ RsDoDwordIoDescriptor (
+
+ case 5: /* Address Granularity */
+
+- Descriptor->Address32.Granularity =
+- (UINT32) InitializerOp->Asl.Value.Integer;
++ Granularity = (UINT32) InitializerOp->Asl.Value.Integer;
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Granularity));
+ GranOp = InitializerOp;
+@@ -156,8 +155,7 @@ RsDoDwordIoDescriptor (
+
+ case 6: /* Address Min */
+
+- Descriptor->Address32.Minimum =
+- (UINT32) InitializerOp->Asl.Value.Integer;
++ Minimum = (UINT32) InitializerOp->Asl.Value.Integer;
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Minimum));
+ MinOp = InitializerOp;
+@@ -165,8 +164,7 @@ RsDoDwordIoDescriptor (
+
+ case 7: /* Address Max */
+
+- Descriptor->Address32.Maximum =
+- (UINT32) InitializerOp->Asl.Value.Integer;
++ Maximum = (UINT32) InitializerOp->Asl.Value.Integer;
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Maximum));
+ MaxOp = InitializerOp;
+@@ -174,16 +172,14 @@ RsDoDwordIoDescriptor (
+
+ case 8: /* Translation Offset */
+
+- Descriptor->Address32.TranslationOffset =
+- (UINT32) InitializerOp->Asl.Value.Integer;
++ TranslationOffset = (UINT32) InitializerOp->Asl.Value.Integer;
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.TranslationOffset));
+ break;
+
+ case 9: /* Address Length */
+
+- Descriptor->Address32.AddressLength =
+- (UINT32) InitializerOp->Asl.Value.Integer;
++ AddressLength = (UINT32) InitializerOp->Asl.Value.Integer;
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.AddressLength));
+ LengthOp = InitializerOp;
+@@ -197,7 +197,7 @@ RsDoDwordIoDescriptor (
+
+ OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer;
+ OptionIndex++;
+- Descriptor->Address32.ResourceLength++;
++ ResourceLength++;
+ ResSourceIndex = TRUE;
+ }
+ break;
+@@ -211,8 +210,7 @@ RsDoDwordIoDescriptor (
+ {
+ /* Found a valid ResourceSource */
+
+- Descriptor->Address32.ResourceLength = (UINT16)
+- (Descriptor->Address32.ResourceLength + StringLength);
++ ResourceLength = (UINT16) (ResourceLength + StringLength);
+
+ strcpy ((char *)
+ &OptionalFields[OptionIndex],
+@@ -272,13 +279,20 @@ RsDoDwordIoDescriptor (
+ /* Validate the Min/Max/Len/Gran values */
+
+ RsLargeAddressCheck (
+- (UINT64) Descriptor->Address32.Minimum,
+- (UINT64) Descriptor->Address32.Maximum,
+- (UINT64) Descriptor->Address32.AddressLength,
+- (UINT64) Descriptor->Address32.Granularity,
++ Minimum,
++ Maximum,
++ AddressLength,
++ Granularity,
+ Descriptor->Address32.Flags,
+ MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp);
+
++ ACPI_MOVE_16_TO_16(&Descriptor->Address32.ResourceLength, &ResourceLength);
++ ACPI_MOVE_32_TO_32(&Descriptor->Address32.Minimum, &Minimum);
++ ACPI_MOVE_32_TO_32(&Descriptor->Address32.Maximum, &Maximum);
++ ACPI_MOVE_32_TO_32(&Descriptor->Address32.AddressLength, &AddressLength);
++ ACPI_MOVE_32_TO_32(&Descriptor->Address32.Granularity, &Granularity);
++ ACPI_MOVE_32_TO_32(&Descriptor->Address32.TranslationOffset, &TranslationOffset);
++
+ Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS32) +
+ OptionIndex + StringLength;
+ return (Rnode);
+@@ -310,7 +316,13 @@ RsDoDwordMemoryDescriptor (
+ ASL_RESOURCE_NODE *Rnode;
+ UINT8 *OptionalFields;
+ UINT16 StringLength = 0;
++ UINT16 ResourceLength = 0;
+ UINT32 OptionIndex = 0;
++ UINT32 Minimum = 0;
++ UINT32 Maximum = 0;
++ UINT32 AddressLength = 0;
++ UINT32 Granularity = 0;
++ UINT32 TranslationOffset = 0;
+ UINT32 CurrentByteOffset;
+ UINT32 i;
+ BOOLEAN ResSourceIndex = FALSE;
+@@ -332,11 +330,9 @@ RsDoDwordMemoryDescriptor (
+ * optional fields present
+ */
+ OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS32);
+- Descriptor->Address32.ResourceLength = (UINT16)
+- (sizeof (AML_RESOURCE_ADDRESS32) -
++ ResourceLength = (UINT16) (sizeof (AML_RESOURCE_ADDRESS32) -
+ sizeof (AML_RESOURCE_LARGE_HEADER));
+
+-
+ /* Process all child initialization nodes */
+
+ for (i = 0; InitializerOp; i++)
+@@ -385,8 +384,7 @@ RsDoDwordMemoryDescriptor (
+
+ case 6: /* Address Granularity */
+
+- Descriptor->Address32.Granularity =
+- (UINT32) InitializerOp->Asl.Value.Integer;
++ Granularity = (UINT32) InitializerOp->Asl.Value.Integer;
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Granularity));
+ GranOp = InitializerOp;
+@@ -394,8 +3926,7 @@ RsDoDwordMemoryDescriptor (
+
+ case 7: /* Min Address */
+
+- Descriptor->Address32.Minimum =
+- (UINT32) InitializerOp->Asl.Value.Integer;
++ Minimum = (UINT32) InitializerOp->Asl.Value.Integer;
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Minimum));
+ MinOp = InitializerOp;
+@@ -403,8 +402,7 @@ RsDoDwordMemoryDescriptor (
+
+ case 8: /* Max Address */
+
+- Descriptor->Address32.Maximum =
+- (UINT32) InitializerOp->Asl.Value.Integer;
++ Maximum = (UINT32) InitializerOp->Asl.Value.Integer;
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Maximum));
+ MaxOp = InitializerOp;
+@@ -412,16 +410,14 @@ RsDoDwordMemoryDescriptor (
+
+ case 9: /* Translation Offset */
+
+- Descriptor->Address32.TranslationOffset =
+- (UINT32) InitializerOp->Asl.Value.Integer;
++ TranslationOffset = (UINT32) InitializerOp->Asl.Value.Integer;
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.TranslationOffset));
+ break;
+
+ case 10: /* Address Length */
+
+- Descriptor->Address32.AddressLength =
+- (UINT32) InitializerOp->Asl.Value.Integer;
++ AddressLength = (UINT32) InitializerOp->Asl.Value.Integer;
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.AddressLength));
+ LengthOp = InitializerOp;
+@@ -433,7 +433,7 @@ RsDoDwordMemoryDescriptor (
+ {
+ OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer;
+ OptionIndex++;
+- Descriptor->Address32.ResourceLength++;
++ ResourceLength++;
+ ResSourceIndex = TRUE;
+ }
+ break;
+@@ -445,8 +445,8 @@ RsDoDwordMemoryDescriptor (
+ {
+ if (StringLength)
+ {
+- Descriptor->Address32.ResourceLength = (UINT16)
+- (Descriptor->Address32.ResourceLength + StringLength);
++
++ ResourceLength = (UINT16) (ResourceLength + StringLength);
+
+ strcpy ((char *)
+ &OptionalFields[OptionIndex],
+@@ -507,13 +514,20 @@ RsDoDwordMemoryDescriptor (
+ /* Validate the Min/Max/Len/Gran values */
+
+ RsLargeAddressCheck (
+- (UINT64) Descriptor->Address32.Minimum,
+- (UINT64) Descriptor->Address32.Maximum,
+- (UINT64) Descriptor->Address32.AddressLength,
+- (UINT64) Descriptor->Address32.Granularity,
++ Minimum,
++ Maximum,
++ AddressLength,
++ Granularity,
+ Descriptor->Address32.Flags,
+ MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp);
+
++ ACPI_MOVE_16_TO_16(&Descriptor->Address32.ResourceLength, &ResourceLength);
++ ACPI_MOVE_32_TO_32(&Descriptor->Address32.Minimum, &Minimum);
++ ACPI_MOVE_32_TO_32(&Descriptor->Address32.Maximum, &Maximum);
++ ACPI_MOVE_32_TO_32(&Descriptor->Address32.AddressLength, &AddressLength);
++ ACPI_MOVE_32_TO_32(&Descriptor->Address32.Granularity, &Granularity);
++ ACPI_MOVE_32_TO_32(&Descriptor->Address32.TranslationOffset, &TranslationOffset);
++
+ Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS32) +
+ OptionIndex + StringLength;
+ return (Rnode);
+@@ -545,7 +551,13 @@ RsDoDwordSpaceDescriptor (
+ ASL_RESOURCE_NODE *Rnode;
+ UINT8 *OptionalFields;
+ UINT16 StringLength = 0;
++ UINT16 ResourceLength = 0;
+ UINT32 OptionIndex = 0;
++ UINT32 Minimum = 0;
++ UINT32 Maximum = 0;
++ UINT32 AddressLength = 0;
++ UINT32 Granularity = 0;
++ UINT32 TranslationOffset = 0;
+ UINT32 CurrentByteOffset;
+ UINT32 i;
+ BOOLEAN ResSourceIndex = FALSE;
+@@ -566,8 +565,7 @@ RsDoDwordSpaceDescriptor (
+ * optional fields present
+ */
+ OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS32);
+- Descriptor->Address32.ResourceLength = (UINT16)
+- (sizeof (AML_RESOURCE_ADDRESS32) -
++ ResourceLength = (UINT16) (sizeof (AML_RESOURCE_ADDRESS32) -
+ sizeof (AML_RESOURCE_LARGE_HEADER));
+
+ /* Process all child initialization nodes */
+@@ -616,8 +615,7 @@ RsDoDwordSpaceDescriptor (
+
+ case 6: /* Address Granularity */
+
+- Descriptor->Address32.Granularity =
+- (UINT32) InitializerOp->Asl.Value.Integer;
++ Granularity = (UINT32) InitializerOp->Asl.Value.Integer;
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Granularity));
+ GranOp = InitializerOp;
+@@ -625,8 +624,7 @@ RsDoDwordSpaceDescriptor (
+
+ case 7: /* Min Address */
+
+- Descriptor->Address32.Minimum =
+- (UINT32) InitializerOp->Asl.Value.Integer;
++ Minimum = (UINT32) InitializerOp->Asl.Value.Integer;
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Minimum));
+ MinOp = InitializerOp;
+@@ -634,8 +633,7 @@ RsDoDwordSpaceDescriptor (
+
+ case 8: /* Max Address */
+
+- Descriptor->Address32.Maximum =
+- (UINT32) InitializerOp->Asl.Value.Integer;
++ Maximum = (UINT32) InitializerOp->Asl.Value.Integer;
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Maximum));
+ MaxOp = InitializerOp;
+@@ -643,16 +641,14 @@ RsDoDwordSpaceDescriptor (
+
+ case 9: /* Translation Offset */
+
+- Descriptor->Address32.TranslationOffset =
+- (UINT32) InitializerOp->Asl.Value.Integer;
++ TranslationOffset = (UINT32) InitializerOp->Asl.Value.Integer;
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.TranslationOffset));
+ break;
+
+ case 10: /* Address Length */
+
+- Descriptor->Address32.AddressLength =
+- (UINT32) InitializerOp->Asl.Value.Integer;
++ AddressLength = (UINT32) InitializerOp->Asl.Value.Integer;
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.AddressLength));
+ LengthOp = InitializerOp;
+@@ -664,7 +664,7 @@ RsDoDwordSpaceDescriptor (
+ {
+ OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer;
+ OptionIndex++;
+- Descriptor->Address32.ResourceLength++;
++ ResourceLength++;
+ ResSourceIndex = TRUE;
+ }
+ break;
+@@ -676,8 +675,7 @@ RsDoDwordSpaceDescriptor (
+ {
+ if (StringLength)
+ {
+- Descriptor->Address32.ResourceLength = (UINT16)
+- (Descriptor->Address32.ResourceLength + StringLength);
++ ResourceLength = (UINT16) (ResourceLength + StringLength);
+
+ strcpy ((char *)
+ &OptionalFields[OptionIndex],
+@@ -724,13 +731,20 @@ RsDoDwordSpaceDescriptor (
+ /* Validate the Min/Max/Len/Gran values */
+
+ RsLargeAddressCheck (
+- (UINT64) Descriptor->Address32.Minimum,
+- (UINT64) Descriptor->Address32.Maximum,
+- (UINT64) Descriptor->Address32.AddressLength,
+- (UINT64) Descriptor->Address32.Granularity,
++ Minimum,
++ Maximum,
++ AddressLength,
++ Granularity,
+ Descriptor->Address32.Flags,
+ MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp);
+
++ ACPI_MOVE_16_TO_16(&Descriptor->Address32.ResourceLength, &ResourceLength);
++ ACPI_MOVE_32_TO_32(&Descriptor->Address32.Minimum, &Minimum);
++ ACPI_MOVE_32_TO_32(&Descriptor->Address32.Maximum, &Maximum);
++ ACPI_MOVE_32_TO_32(&Descriptor->Address32.AddressLength, &AddressLength);
++ ACPI_MOVE_32_TO_32(&Descriptor->Address32.Granularity, &Granularity);
++ ACPI_MOVE_32_TO_32(&Descriptor->Address32.TranslationOffset, &TranslationOffset);
++
+ Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS32) +
+ OptionIndex + StringLength;
+ return (Rnode);
+diff -up acpica-unix2-20140424/source/compiler/aslrestype2e.c.debian-big_endian acpica-unix2-20140424/source/compiler/aslrestype2e.c
+--- acpica-unix2-20140424/source/compiler/aslrestype2e.c.debian-big_endian 2014-04-24 11:49:00.000000000 -0400
++++ acpica-unix2-20140424/source/compiler/aslrestype2e.c 2014-06-06 20:43:34.721825238 -0400
+@@ -78,6 +85,13 @@ RsDoExtendedIoDescriptor (
+ ACPI_PARSE_OBJECT *GranOp = NULL;
+ ASL_RESOURCE_NODE *Rnode;
+ UINT16 StringLength = 0;
++ UINT16 ResourceLength = 0;
++ UINT64 Minimum = 0;
++ UINT64 Maximum = 0;
++ UINT64 AddressLength = 0;
++ UINT64 Granularity = 0;
++ UINT64 TranslationOffset = 0;
++ UINT64 TypeSpecific = 0;
+ UINT32 CurrentByteOffset;
+ UINT32 i;
+
+@@ -94,9 +95,10 @@ RsDoExtendedIoDescriptor (
+ Descriptor->ExtAddress64.ResourceType = ACPI_ADDRESS_TYPE_IO_RANGE;
+ Descriptor->ExtAddress64.RevisionID = AML_RESOURCE_EXTENDED_ADDRESS_REVISION;
+
+- Descriptor->ExtAddress64.ResourceLength = (UINT16)
+- (sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) -
++ ResourceLength = (UINT16) (sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) -
+ sizeof (AML_RESOURCE_LARGE_HEADER));
++ ACPI_MOVE_16_TO_16(&Descriptor->ExtAddress64.ResourceLength,
++ &ResourceLength);
+
+ /* Process all child initialization nodes */
+
+@@ -139,7 +139,7 @@ RsDoExtendedIoDescriptor (
+
+ case 5: /* Address Granularity */
+
+- Descriptor->ExtAddress64.Granularity = InitializerOp->Asl.Value.Integer;
++ Granularity = InitializerOp->Asl.Value.Integer;
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Granularity));
+ GranOp = InitializerOp;
+@@ -147,7 +147,7 @@ RsDoExtendedIoDescriptor (
+
+ case 6: /* Address Min */
+
+- Descriptor->ExtAddress64.Minimum = InitializerOp->Asl.Value.Integer;
++ Minimum = InitializerOp->Asl.Value.Integer;
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Minimum));
+ MinOp = InitializerOp;
+@@ -155,7 +155,7 @@ RsDoExtendedIoDescriptor (
+
+ case 7: /* Address Max */
+
+- Descriptor->ExtAddress64.Maximum = InitializerOp->Asl.Value.Integer;
++ Maximum = InitializerOp->Asl.Value.Integer;
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Maximum));
+ MaxOp = InitializerOp;
+@@ -163,14 +163,14 @@ RsDoExtendedIoDescriptor (
+
+ case 8: /* Translation Offset */
+
+- Descriptor->ExtAddress64.TranslationOffset = InitializerOp->Asl.Value.Integer;
++ TranslationOffset = InitializerOp->Asl.Value.Integer;
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TranslationOffset));
+ break;
+
+ case 9: /* Address Length */
+
+- Descriptor->ExtAddress64.AddressLength = InitializerOp->Asl.Value.Integer;
++ AddressLength = InitializerOp->Asl.Value.Integer;
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.AddressLength));
+ LengthOp = InitializerOp;
+@@ -178,7 +178,7 @@ RsDoExtendedIoDescriptor (
+
+ case 10: /* Type-Specific Attributes */
+
+- Descriptor->ExtAddress64.TypeSpecific = InitializerOp->Asl.Value.Integer;
++ TypeSpecific = InitializerOp->Asl.Value.Integer;
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TypeSpecific));
+ break;
+@@ -214,13 +221,20 @@ RsDoExtendedIoDescriptor (
+ /* Validate the Min/Max/Len/Gran values */
+
+ RsLargeAddressCheck (
+- Descriptor->ExtAddress64.Minimum,
+- Descriptor->ExtAddress64.Maximum,
+- Descriptor->ExtAddress64.AddressLength,
+- Descriptor->ExtAddress64.Granularity,
++ Minimum,
++ Maximum,
++ AddressLength,
++ Granularity,
+ Descriptor->ExtAddress64.Flags,
+ MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp);
+
++ ACPI_MOVE_64_TO_64(&Descriptor->ExtAddress64.Minimum, &Minimum);
++ ACPI_MOVE_64_TO_64(&Descriptor->ExtAddress64.Maximum, &Maximum);
++ ACPI_MOVE_64_TO_64(&Descriptor->ExtAddress64.AddressLength, &AddressLength);
++ ACPI_MOVE_64_TO_64(&Descriptor->ExtAddress64.Granularity, &Granularity);
++ ACPI_MOVE_64_TO_64(&Descriptor->ExtAddress64.TranslationOffset, &TranslationOffset);
++ ACPI_MOVE_64_TO_64(&Descriptor->ExtAddress64.TypeSpecific, &TypeSpecific);
++
+ Rnode->BufferLength = sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) +
+ StringLength;
+ return (Rnode);
+ }
+@@ -254,6 +270,13 @@ RsDoExtendedMemoryDescriptor (
+ ACPI_PARSE_OBJECT *GranOp = NULL;
+ ASL_RESOURCE_NODE *Rnode;
+ UINT16 StringLength = 0;
++ UINT16 ResourceLength = 0;
++ UINT64 Minimum = 0;
++ UINT64 Maximum = 0;
++ UINT64 AddressLength = 0;
++ UINT64 Granularity = 0;
++ UINT64 TranslationOffset = 0;
++ UINT64 TypeSpecific = 0;
+ UINT32 CurrentByteOffset;
+ UINT32 i;
+
+@@ -268,9 +291,10 @@ RsDoExtendedMemoryDescriptor (
+ Descriptor->ExtAddress64.ResourceType = ACPI_ADDRESS_TYPE_MEMORY_RANGE;
+ Descriptor->ExtAddress64.RevisionID = AML_RESOURCE_EXTENDED_ADDRESS_REVISION;
+
+- Descriptor->ExtAddress64.ResourceLength = (UINT16)
+- (sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) -
++ ResourceLength = (UINT16) (sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) -
+ sizeof (AML_RESOURCE_LARGE_HEADER));
++ ACPI_MOVE_16_TO_16(&Descriptor->ExtAddress64.ResourceLength,
++ &ResourceLength);
+
+ /* Process all child initialization nodes */
+
+@@ -320,7 +344,7 @@ RsDoExtendedMemoryDescriptor (
+
+ case 6: /* Address Granularity */
+
+- Descriptor->ExtAddress64.Granularity = InitializerOp->Asl.Value.Integer;
++ Granularity = InitializerOp->Asl.Value.Integer;
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Granularity));
+ GranOp = InitializerOp;
+@@ -328,7 +352,7 @@ RsDoExtendedMemoryDescriptor (
+
+ case 7: /* Min Address */
+
+- Descriptor->ExtAddress64.Minimum = InitializerOp->Asl.Value.Integer;
++ Minimum = InitializerOp->Asl.Value.Integer;
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Minimum));
+ MinOp = InitializerOp;
+@@ -336,7 +360,7 @@ RsDoExtendedMemoryDescriptor (
+
+ case 8: /* Max Address */
+
+- Descriptor->ExtAddress64.Maximum = InitializerOp->Asl.Value.Integer;
++ Maximum = InitializerOp->Asl.Value.Integer;
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Maximum));
+ MaxOp = InitializerOp;
+@@ -344,14 +368,14 @@ RsDoExtendedMemoryDescriptor (
+
+ case 9: /* Translation Offset */
+
+- Descriptor->ExtAddress64.TranslationOffset = InitializerOp->Asl.Value.Integer;
++ TranslationOffset = InitializerOp->Asl.Value.Integer;
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TranslationOffset));
+ break;
+
+ case 10: /* Address Length */
+
+- Descriptor->ExtAddress64.AddressLength = InitializerOp->Asl.Value.Integer;
++ AddressLength = InitializerOp->Asl.Value.Integer;
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.AddressLength));
+ LengthOp = InitializerOp;
+@@ -359,7 +383,7 @@ RsDoExtendedMemoryDescriptor (
+
+ case 11: /* Type-Specific Attributes */
+
+- Descriptor->ExtAddress64.TypeSpecific = InitializerOp->Asl.Value.Integer;
++ TypeSpecific = InitializerOp->Asl.Value.Integer;
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TypeSpecific));
+ break;
+@@ -396,13 +420,20 @@ RsDoExtendedMemoryDescriptor (
+ /* Validate the Min/Max/Len/Gran values */
+
+ RsLargeAddressCheck (
+- Descriptor->ExtAddress64.Minimum,
+- Descriptor->ExtAddress64.Maximum,
+- Descriptor->ExtAddress64.AddressLength,
+- Descriptor->ExtAddress64.Granularity,
++ Minimum,
++ Maximum,
++ AddressLength,
++ Granularity,
+ Descriptor->ExtAddress64.Flags,
+ MinOp, MaxOp, LengthOp, GranOp, Op);
+
++ ACPI_MOVE_64_TO_64(&Descriptor->ExtAddress64.Minimum, &Minimum);
++ ACPI_MOVE_64_TO_64(&Descriptor->ExtAddress64.Maximum, &Maximum);
++ ACPI_MOVE_64_TO_64(&Descriptor->ExtAddress64.AddressLength, &AddressLength);
++ ACPI_MOVE_64_TO_64(&Descriptor->ExtAddress64.Granularity, &Granularity);
++ ACPI_MOVE_64_TO_64(&Descriptor->ExtAddress64.TranslationOffset, &TranslationOffset);
++ ACPI_MOVE_64_TO_64(&Descriptor->ExtAddress64.TypeSpecific, &TypeSpecific);
++
+ Rnode->BufferLength = sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) + StringLength;
+ return (Rnode);
+ }
+@@ -435,6 +466,13 @@ RsDoExtendedSpaceDescriptor (
+ ACPI_PARSE_OBJECT *GranOp = NULL;
+ ASL_RESOURCE_NODE *Rnode;
+ UINT16 StringLength = 0;
++ UINT16 ResourceLength = 0;
++ UINT64 Minimum = 0;
++ UINT64 Maximum = 0;
++ UINT64 AddressLength = 0;
++ UINT64 Granularity = 0;
++ UINT64 TranslationOffset = 0;
++ UINT64 TypeSpecific = 0;
+ UINT32 i;
+
+
+@@ -448,9 +486,10 @@ RsDoExtendedSpaceDescriptor (
+ Descriptor->ExtAddress64.DescriptorType = ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64;
+ Descriptor->ExtAddress64.RevisionID = AML_RESOURCE_EXTENDED_ADDRESS_REVISION;
+
+- Descriptor->ExtAddress64.ResourceLength = (UINT16)
+- (sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) -
++ ResourceLength = (UINT16) (sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) -
+ sizeof (AML_RESOURCE_LARGE_HEADER));
++ ACPI_MOVE_16_TO_16(&Descriptor->ExtAddress64.ResourceLength,
++ &ResourceLength);
+
+ /* Process all child initialization nodes */
+
+@@ -498,7 +537,7 @@ RsDoExtendedSpaceDescriptor (
+
+ case 6: /* Address Granularity */
+
+- Descriptor->ExtAddress64.Granularity = InitializerOp->Asl.Value.Integer;
++ Granularity = InitializerOp->Asl.Value.Integer;
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Granularity));
+ GranOp = InitializerOp;
+@@ -506,7 +545,7 @@ RsDoExtendedSpaceDescriptor (
+
+ case 7: /* Min Address */
+
+- Descriptor->ExtAddress64.Minimum = InitializerOp->Asl.Value.Integer;
++ Minimum = InitializerOp->Asl.Value.Integer;
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Minimum));
+ MinOp = InitializerOp;
+@@ -514,7 +553,7 @@ RsDoExtendedSpaceDescriptor (
+
+ case 8: /* Max Address */
+
+- Descriptor->ExtAddress64.Maximum = InitializerOp->Asl.Value.Integer;
++ Maximum = InitializerOp->Asl.Value.Integer;
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Maximum));
+ MaxOp = InitializerOp;
+@@ -522,14 +561,14 @@ RsDoExtendedSpaceDescriptor (
+
+ case 9: /* Translation Offset */
+
+- Descriptor->ExtAddress64.TranslationOffset = InitializerOp->Asl.Value.Integer;
++ TranslationOffset = InitializerOp->Asl.Value.Integer;
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TranslationOffset));
+ break;
+
+ case 10: /* Address Length */
+
+- Descriptor->ExtAddress64.AddressLength = InitializerOp->Asl.Value.Integer;
++ AddressLength = InitializerOp->Asl.Value.Integer;
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.AddressLength));
+ LengthOp = InitializerOp;
+@@ -537,7 +576,7 @@ RsDoExtendedSpaceDescriptor (
+
+ case 11: /* Type-Specific Attributes */
+
+- Descriptor->ExtAddress64.TypeSpecific = InitializerOp->Asl.Value.Integer;
++ TypeSpecific = InitializerOp->Asl.Value.Integer;
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TypeSpecific));
+ break;
+@@ -559,13 +598,20 @@ RsDoExtendedSpaceDescriptor (
+ /* Validate the Min/Max/Len/Gran values */
+
+ RsLargeAddressCheck (
+- Descriptor->ExtAddress64.Minimum,
+- Descriptor->ExtAddress64.Maximum,
+- Descriptor->ExtAddress64.AddressLength,
+- Descriptor->ExtAddress64.Granularity,
++ Minimum,
++ Maximum,
++ AddressLength,
++ Granularity,
+ Descriptor->ExtAddress64.Flags,
+ MinOp, MaxOp, LengthOp, GranOp, Op);
+
++ ACPI_MOVE_64_TO_64(&Descriptor->ExtAddress64.Minimum, &Minimum);
++ ACPI_MOVE_64_TO_64(&Descriptor->ExtAddress64.Maximum, &Maximum);
++ ACPI_MOVE_64_TO_64(&Descriptor->ExtAddress64.AddressLength, &AddressLength);
++ ACPI_MOVE_64_TO_64(&Descriptor->ExtAddress64.Granularity, &Granularity);
++ ACPI_MOVE_64_TO_64(&Descriptor->ExtAddress64.TranslationOffset, &TranslationOffset);
++ ACPI_MOVE_64_TO_64(&Descriptor->ExtAddress64.TypeSpecific, &TypeSpecific);
++
+ Rnode->BufferLength = sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) + StringLength;
+ return (Rnode);
+ }
+diff -up acpica-unix2-20140424/source/compiler/aslrestype2q.c.debian-big_endian acpica-unix2-20140424/source/compiler/aslrestype2q.c
+--- acpica-unix2-20140424/source/compiler/aslrestype2q.c.debian-big_endian 2014-04-24 11:49:00.000000000 -0400
++++ acpica-unix2-20140424/source/compiler/aslrestype2q.c 2014-06-06 20:43:34.721825238 -0400
+@@ -80,7 +86,13 @@ RsDoQwordIoDescriptor (
+ ASL_RESOURCE_NODE *Rnode;
+ UINT8 *OptionalFields;
+ UINT16 StringLength = 0;
++ UINT16 ResourceLength = 0;
+ UINT32 OptionIndex = 0;
++ UINT64 Minimum = 0;
++ UINT64 Maximum = 0;
++ UINT64 AddressLength = 0;
++ UINT64 Granularity = 0;
++ UINT64 TranslationOffset = 0;
+ UINT32 CurrentByteOffset;
+ UINT32 i;
+ BOOLEAN ResSourceIndex = FALSE;
+@@ -102,8 +101,7 @@ RsDoQwordIoDescriptor (
+ * optional fields present
+ */
+ OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS64);
+- Descriptor->Address64.ResourceLength = (UINT16)
+- (sizeof (AML_RESOURCE_ADDRESS64) -
++ ResourceLength = (UINT16) (sizeof (AML_RESOURCE_ADDRESS64) -
+ sizeof (AML_RESOURCE_LARGE_HEADER));
+
+ /* Process all child initialization nodes */
+@@ -147,7 +147,7 @@ RsDoQwordIoDescriptor (
+
+ case 5: /* Address Granularity */
+
+- Descriptor->Address64.Granularity = InitializerOp->Asl.Value.Integer;
++ Granularity = InitializerOp->Asl.Value.Integer;
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Granularity));
+ GranOp = InitializerOp;
+@@ -155,7 +155,7 @@ RsDoQwordIoDescriptor (
+
+ case 6: /* Address Min */
+
+- Descriptor->Address64.Minimum = InitializerOp->Asl.Value.Integer;
++ Minimum = InitializerOp->Asl.Value.Integer;
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Minimum));
+ MinOp = InitializerOp;
+@@ -163,7 +163,7 @@ RsDoQwordIoDescriptor (
+
+ case 7: /* Address Max */
+
+- Descriptor->Address64.Maximum = InitializerOp->Asl.Value.Integer;
++ Maximum = InitializerOp->Asl.Value.Integer;
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Maximum));
+ MaxOp = InitializerOp;
+@@ -171,14 +171,14 @@ RsDoQwordIoDescriptor (
+
+ case 8: /* Translation Offset */
+
+- Descriptor->Address64.TranslationOffset = InitializerOp->Asl.Value.Integer;
++ TranslationOffset = InitializerOp->Asl.Value.Integer;
+ RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.TranslationOffset));
+ break;
+
+ case 9: /* Address Length */
+
+- Descriptor->Address64.AddressLength = InitializerOp->Asl.Value.Integer;
++ AddressLength = InitializerOp->Asl.Value.Integer;
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.AddressLength));
+ LengthOp = InitializerOp;
+@@ -190,7 +190,7 @@ RsDoQwordIoDescriptor (
+ {
+ OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer;
+ OptionIndex++;
+- Descriptor->Address64.ResourceLength++;
++ ResourceLength++;
+ ResSourceIndex = TRUE;
+ }
+ break;
+@@ -202,8 +201,7 @@ RsDoQwordIoDescriptor (
+ {
+ if (StringLength)
+ {
+- Descriptor->Address64.ResourceLength = (UINT16)
+- (Descriptor->Address64.ResourceLength + StringLength);
++ ResourceLength = (UINT16) (ResourceLength + StringLength);
+
+ strcpy ((char *)
+ &OptionalFields[OptionIndex],
+@@ -263,13 +270,20 @@ RsDoQwordIoDescriptor (
+ /* Validate the Min/Max/Len/Gran values */
+
+ RsLargeAddressCheck (
+- Descriptor->Address64.Minimum,
+- Descriptor->Address64.Maximum,
+- Descriptor->Address64.AddressLength,
+- Descriptor->Address64.Granularity,
++ Minimum,
++ Maximum,
++ AddressLength,
++ Granularity,
+ Descriptor->Address64.Flags,
+ MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp);
+
++ ACPI_MOVE_16_TO_16(&Descriptor->Address64.ResourceLength, &ResourceLength);
++ ACPI_MOVE_64_TO_64(&Descriptor->Address64.Minimum, &Minimum);
++ ACPI_MOVE_64_TO_64(&Descriptor->Address64.Maximum, &Maximum);
++ ACPI_MOVE_64_TO_64(&Descriptor->Address64.AddressLength, &AddressLength);
++ ACPI_MOVE_64_TO_64(&Descriptor->Address64.Granularity, &Granularity);
++ ACPI_MOVE_64_TO_64(&Descriptor->Address64.TranslationOffset, &TranslationOffset);
++
+ Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS64) +
+ OptionIndex + StringLength;
+ return (Rnode);
+@@ -301,7 +307,13 @@ RsDoQwordMemoryDescriptor (
+ ASL_RESOURCE_NODE *Rnode;
+ UINT8 *OptionalFields;
+ UINT16 StringLength = 0;
++ UINT16 ResourceLength = 0;
+ UINT32 OptionIndex = 0;
++ UINT64 Minimum = 0;
++ UINT64 Maximum = 0;
++ UINT64 AddressLength = 0;
++ UINT64 Granularity = 0;
++ UINT64 TranslationOffset = 0;
+ UINT32 CurrentByteOffset;
+ UINT32 i;
+ BOOLEAN ResSourceIndex = FALSE;
+@@ -323,8 +322,7 @@ RsDoQwordMemoryDescriptor (
+ * optional fields present
+ */
+ OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS64);
+- Descriptor->Address64.ResourceLength = (UINT16)
+- (sizeof (AML_RESOURCE_ADDRESS64) -
++ ResourceLength = (UINT16) (sizeof (AML_RESOURCE_ADDRESS64) -
+ sizeof (AML_RESOURCE_LARGE_HEADER));
+
+ /* Process all child initialization nodes */
+@@ -375,7 +375,7 @@ RsDoQwordMemoryDescriptor (
+
+ case 6: /* Address Granularity */
+
+- Descriptor->Address64.Granularity = InitializerOp->Asl.Value.Integer;
++ Granularity = InitializerOp->Asl.Value.Integer;
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Granularity));
+ GranOp = InitializerOp;
+@@ -383,7 +383,7 @@ RsDoQwordMemoryDescriptor (
+
+ case 7: /* Min Address */
+
+- Descriptor->Address64.Minimum = InitializerOp->Asl.Value.Integer;
++ Minimum = InitializerOp->Asl.Value.Integer;
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Minimum));
+ MinOp = InitializerOp;
+@@ -391,7 +391,7 @@ RsDoQwordMemoryDescriptor (
+
+ case 8: /* Max Address */
+
+- Descriptor->Address64.Maximum = InitializerOp->Asl.Value.Integer;
++ Maximum = InitializerOp->Asl.Value.Integer;
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Maximum));
+ MaxOp = InitializerOp;
+@@ -399,14 +399,14 @@ RsDoQwordMemoryDescriptor (
+
+ case 9: /* Translation Offset */
+
+- Descriptor->Address64.TranslationOffset = InitializerOp->Asl.Value.Integer;
++ TranslationOffset = InitializerOp->Asl.Value.Integer;
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.TranslationOffset));
+ break;
+
+ case 10: /* Address Length */
+
+- Descriptor->Address64.AddressLength = InitializerOp->Asl.Value.Integer;
++ AddressLength = InitializerOp->Asl.Value.Integer;
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.AddressLength));
+ LengthOp = InitializerOp;
+@@ -418,7 +418,7 @@ RsDoQwordMemoryDescriptor (
+ {
+ OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer;
+ OptionIndex++;
+- Descriptor->Address64.ResourceLength++;
++ ResourceLength++;
+ ResSourceIndex = TRUE;
+ }
+ break;
+@@ -430,8 +429,7 @@ RsDoQwordMemoryDescriptor (
+ {
+ if (StringLength)
+ {
+- Descriptor->Address64.ResourceLength = (UINT16)
+- (Descriptor->Address64.ResourceLength + StringLength);
++ ResourceLength = (UINT16) (ResourceLength + StringLength);
+
+ strcpy ((char *)
+ &OptionalFields[OptionIndex],
+@@ -492,13 +499,20 @@ RsDoQwordMemoryDescriptor (
+ /* Validate the Min/Max/Len/Gran values */
+
+ RsLargeAddressCheck (
+- Descriptor->Address64.Minimum,
+- Descriptor->Address64.Maximum,
+- Descriptor->Address64.AddressLength,
+- Descriptor->Address64.Granularity,
++ Minimum,
++ Maximum,
++ AddressLength,
++ Granularity,
+ Descriptor->Address64.Flags,
+ MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp);
+
++ ACPI_MOVE_16_TO_16(&Descriptor->Address64.ResourceLength, &ResourceLength);
++ ACPI_MOVE_64_TO_64(&Descriptor->Address64.Minimum, &Minimum);
++ ACPI_MOVE_64_TO_64(&Descriptor->Address64.Maximum, &Maximum);
++ ACPI_MOVE_64_TO_64(&Descriptor->Address64.AddressLength, &AddressLength);
++ ACPI_MOVE_64_TO_64(&Descriptor->Address64.Granularity, &Granularity);
++ ACPI_MOVE_64_TO_64(&Descriptor->Address64.TranslationOffset, &TranslationOffset);
++
+ Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS64) +
+ OptionIndex + StringLength;
+ return (Rnode);
+@@ -530,9 +536,15 @@ RsDoQwordSpaceDescriptor (
+ ASL_RESOURCE_NODE *Rnode;
+ UINT8 *OptionalFields;
+ UINT16 StringLength = 0;
++ UINT16 ResourceLength = 0;
+ UINT32 OptionIndex = 0;
+ UINT32 CurrentByteOffset;
+ UINT32 i;
++ UINT64 Minimum = 0;
++ UINT64 Maximum = 0;
++ UINT64 AddressLength = 0;
++ UINT64 Granularity = 0;
++ UINT64 TranslationOffset = 0;
+ BOOLEAN ResSourceIndex = FALSE;
+
+
+@@ -551,8 +550,7 @@ RsDoQwordSpaceDescriptor (
+ * optional fields present
+ */
+ OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS64);
+- Descriptor->Address64.ResourceLength = (UINT16)
+- (sizeof (AML_RESOURCE_ADDRESS64) -
++ ResourceLength = (UINT16) (sizeof (AML_RESOURCE_ADDRESS64) -
+ sizeof (AML_RESOURCE_LARGE_HEADER));
+
+ /* Process all child initialization nodes */
+@@ -601,7 +601,7 @@ RsDoQwordSpaceDescriptor (
+
+ case 6: /* Address Granularity */
+
+- Descriptor->Address64.Granularity = InitializerOp->Asl.Value.Integer;
++ Granularity = InitializerOp->Asl.Value.Integer;
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Granularity));
+ GranOp = InitializerOp;
+@@ -609,7 +609,7 @@ RsDoQwordSpaceDescriptor (
+
+ case 7: /* Min Address */
+
+- Descriptor->Address64.Minimum = InitializerOp->Asl.Value.Integer;
++ Minimum = InitializerOp->Asl.Value.Integer;
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Minimum));
+ MinOp = InitializerOp;
+@@ -617,7 +617,7 @@ RsDoQwordSpaceDescriptor (
+
+ case 8: /* Max Address */
+
+- Descriptor->Address64.Maximum = InitializerOp->Asl.Value.Integer;
++ Maximum = InitializerOp->Asl.Value.Integer;
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Maximum));
+ MaxOp = InitializerOp;
+@@ -625,14 +625,14 @@ RsDoQwordSpaceDescriptor (
+
+ case 9: /* Translation Offset */
+
+- Descriptor->Address64.TranslationOffset = InitializerOp->Asl.Value.Integer;
++ TranslationOffset = InitializerOp->Asl.Value.Integer;
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.TranslationOffset));
+ break;
+
+ case 10: /* Address Length */
+
+- Descriptor->Address64.AddressLength = InitializerOp->Asl.Value.Integer;
++ AddressLength = InitializerOp->Asl.Value.Integer;
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.AddressLength));
+ LengthOp = InitializerOp;
+@@ -644,7 +644,7 @@ RsDoQwordSpaceDescriptor (
+ {
+ OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer;
+ OptionIndex++;
+- Descriptor->Address64.ResourceLength++;
++ ResourceLength++;
+ ResSourceIndex = TRUE;
+ }
+ break;
+@@ -656,8 +655,7 @@ RsDoQwordSpaceDescriptor (
+ {
+ if (StringLength)
+ {
+- Descriptor->Address64.ResourceLength = (UINT16)
+- (Descriptor->Address64.ResourceLength + StringLength);
++ ResourceLength = (UINT16) (ResourceLength + StringLength);
+
+ strcpy ((char *)
+ &OptionalFields[OptionIndex],
+@@ -703,13 +710,20 @@ RsDoQwordSpaceDescriptor (
+ /* Validate the Min/Max/Len/Gran values */
+
+ RsLargeAddressCheck (
+- Descriptor->Address64.Minimum,
+- Descriptor->Address64.Maximum,
+- Descriptor->Address64.AddressLength,
+- Descriptor->Address64.Granularity,
++ Minimum,
++ Maximum,
++ AddressLength,
++ Granularity,
+ Descriptor->Address64.Flags,
+ MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp);
+
++ ACPI_MOVE_16_TO_16(&Descriptor->Address64.ResourceLength, &ResourceLength);
++ ACPI_MOVE_64_TO_64(&Descriptor->Address64.Minimum, &Minimum);
++ ACPI_MOVE_64_TO_64(&Descriptor->Address64.Maximum, &Maximum);
++ ACPI_MOVE_64_TO_64(&Descriptor->Address64.AddressLength, &AddressLength);
++ ACPI_MOVE_64_TO_64(&Descriptor->Address64.Granularity, &Granularity);
++ ACPI_MOVE_64_TO_64(&Descriptor->Address64.TranslationOffset, &TranslationOffset);
++
+ Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS64) +
+ OptionIndex + StringLength;
+ return (Rnode);
+diff -up acpica-unix2-20140424/source/compiler/aslrestype2s.c.debian-big_endian acpica-unix2-20140424/source/compiler/aslrestype2s.c
+--- acpica-unix2-20140424/source/compiler/aslrestype2s.c.debian-big_endian 2014-04-24 11:49:00.000000000 -0400
++++ acpica-unix2-20140424/source/compiler/aslrestype2s.c 2014-06-06 20:43:34.721825238 -0400
+@@ -290,6 +293,9 @@ RsDoGpioIntDescriptor (
+ UINT16 VendorLength;
+ UINT16 InterruptLength;
+ UINT16 DescriptorSize;
++ UINT16 IntFlags = 0;
++ UINT16 DebounceTimeout = 0;
++ UINT16 Flags = 0;
+ UINT32 CurrentByteOffset;
+ UINT32 PinCount = 0;
+ UINT32 i;
+@@ -349,21 +349,21 @@ RsDoGpioIntDescriptor (
+ {
+ case 0: /* Interrupt Mode - edge/level [Flag] (_MOD) */
+
+- RsSetFlagBits16 (&Descriptor->Gpio.IntFlags, InitializerOp, 0, 0);
++ RsSetFlagBits16 (&IntFlags, InitializerOp, 0, 0);
+ RsCreateBitField (InitializerOp, ACPI_RESTAG_MODE,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Gpio.IntFlags), 0);
+ break;
+
+ case 1: /* Interrupt Polarity - Active high/low [Flags] (_POL) */
+
+- RsSetFlagBits16 (&Descriptor->Gpio.IntFlags, InitializerOp, 1, 0);
++ RsSetFlagBits16 (&IntFlags, InitializerOp, 1, 0);
+ RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_POLARITY,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Gpio.IntFlags), 1, 2);
+ break;
+
+ case 2: /* Share Type - Default: exclusive (0) [Flags] (_SHR) */
+
+- RsSetFlagBits16 (&Descriptor->Gpio.IntFlags, InitializerOp, 3, 0);
++ RsSetFlagBits16 (&IntFlags, InitializerOp, 3, 0);
+ RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_INTERRUPTSHARE,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Gpio.IntFlags), 3, 2);
+ break;
+@@ -377,7 +377,7 @@ RsDoGpioIntDescriptor (
+
+ case 4: /* Debounce Timeout [WORD] (_DBT) */
+
+- Descriptor->Gpio.DebounceTimeout = (UINT16) InitializerOp->Asl.Value.Integer;
++ DebounceTimeout = (UINT16) InitializerOp->Asl.Value.Integer;
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_DEBOUNCETIME,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Gpio.DebounceTimeout));
+ break;
+@@ -403,7 +403,7 @@ RsDoGpioIntDescriptor (
+
+ case 7: /* Resource Usage (consumer/producer) */
+
+- RsSetFlagBits16 (&Descriptor->Gpio.Flags, InitializerOp, 0, 1);
++ RsSetFlagBits16 (&Flags, InitializerOp, 0, 1);
+ break;
+
+ case 8: /* Resource Tag (Descriptor Name) */
+@@ -468,6 +472,10 @@ RsDoGpioIntDescriptor (
+ InitializerOp = RsCompleteNodeAndGetNext (InitializerOp);
+ }
+
++ ACPI_MOVE_16_TO_16(&Descriptor->Gpio.IntFlags, &IntFlags);
++ ACPI_MOVE_16_TO_16(&Descriptor->Gpio.DebounceTimeout, &DebounceTimeout);
++ ACPI_MOVE_16_TO_16(&Descriptor->Gpio.Flags, &Flags);
++
+ MpSaveGpioInfo (Info->MappingOp, Descriptor, PinCount, PinList, ResourceSource);
+ return (Rnode);
+ }
+@@ -500,6 +504,10 @@ RsDoGpioIoDescriptor (
+ UINT16 VendorLength;
+ UINT16 InterruptLength;
+ UINT16 DescriptorSize;
++ UINT16 IntFlags = 0;
++ UINT16 DebounceTimeout = 0;
++ UINT16 DriveStrength = 0;
++ UINT16 Flags = 0;
+ UINT32 CurrentByteOffset;
+ UINT32 PinCount = 0;
+ UINT32 i;
+@@ -560,7 +560,7 @@ RsDoGpioIoDescriptor (
+ {
+ case 0: /* Share Type [Flags] (_SHR) */
+
+- RsSetFlagBits16 (&Descriptor->Gpio.IntFlags, InitializerOp, 3, 0);
++ RsSetFlagBits16 (&IntFlags, InitializerOp, 3, 0);
+ RsCreateBitField (InitializerOp, ACPI_RESTAG_INTERRUPTSHARE,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Gpio.IntFlags), 3);
+ break;
+@@ -574,21 +574,21 @@ RsDoGpioIoDescriptor (
+
+ case 2: /* Debounce Timeout [WORD] (_DBT) */
+
+- Descriptor->Gpio.DebounceTimeout = (UINT16) InitializerOp->Asl.Value.Integer;
++ DebounceTimeout = (UINT16) InitializerOp->Asl.Value.Integer;
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_DEBOUNCETIME,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Gpio.DebounceTimeout));
+ break;
+
+ case 3: /* Drive Strength [WORD] (_DRS) */
+
+- Descriptor->Gpio.DriveStrength = (UINT16) InitializerOp->Asl.Value.Integer;
++ DriveStrength = (UINT16) InitializerOp->Asl.Value.Integer;
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_DRIVESTRENGTH,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Gpio.DriveStrength));
+ break;
+
+ case 4: /* I/O Restriction [Flag] (_IOR) */
+
+- RsSetFlagBits16 (&Descriptor->Gpio.IntFlags, InitializerOp, 0, 0);
++ RsSetFlagBits16 (&IntFlags, InitializerOp, 0, 0);
+ RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_IORESTRICTION,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Gpio.IntFlags), 0, 2);
+ break;
+@@ -614,7 +614,7 @@ RsDoGpioIoDescriptor (
+
+ case 7: /* Resource Usage (consumer/producer) */
+
+- RsSetFlagBits16 (&Descriptor->Gpio.Flags, InitializerOp, 0, 1);
++ RsSetFlagBits16 (&Flags, InitializerOp, 0, 1);
+ break;
+
+ case 8: /* Resource Tag (Descriptor Name) */
+@@ -678,6 +683,11 @@ RsDoGpioIoDescriptor (
+ InitializerOp = RsCompleteNodeAndGetNext (InitializerOp);
+ }
+
++ ACPI_MOVE_16_TO_16(&Descriptor->Gpio.IntFlags, &IntFlags);
++ ACPI_MOVE_16_TO_16(&Descriptor->Gpio.DebounceTimeout, &DebounceTimeout);
++ ACPI_MOVE_16_TO_16(&Descriptor->Gpio.DriveStrength, &DriveStrength);
++ ACPI_MOVE_16_TO_16(&Descriptor->Gpio.Flags, &Flags);
++
+ MpSaveGpioInfo (Info->MappingOp, Descriptor, PinCount, PinList, ResourceSource);
+ return (Rnode);
+ }
+@@ -707,6 +710,9 @@ RsDoI2cSerialBusDescriptor (
+ UINT16 ResSourceLength;
+ UINT16 VendorLength;
+ UINT16 DescriptorSize;
++ UINT16 SlaveAddress = 0;
++ UINT32 ConnectionSpeed = 0;
++ UINT16 TypeSpecificFlags = 0;
+ UINT32 CurrentByteOffset;
+ UINT32 i;
+
+@@ -756,7 +756,7 @@ RsDoI2cSerialBusDescriptor (
+ {
+ case 0: /* Slave Address [WORD] (_ADR) */
+
+- Descriptor->I2cSerialBus.SlaveAddress = (UINT16) InitializerOp->Asl.Value.Integer;
++ SlaveAddress = (UINT16) InitializerOp->Asl.Value.Integer;
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_ADDRESS,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (I2cSerialBus.SlaveAddress));
+ break;
+@@ -770,14 +770,14 @@ RsDoI2cSerialBusDescriptor (
+
+ case 2: /* Connection Speed [DWORD] (_SPE) */
+
+- Descriptor->I2cSerialBus.ConnectionSpeed = (UINT32) InitializerOp->Asl.Value.Integer;
++ ConnectionSpeed = (UINT32) InitializerOp->Asl.Value.Integer;
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_SPEED,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (I2cSerialBus.ConnectionSpeed));
+ break;
+
+ case 3: /* Addressing Mode [Flag] (_MOD) */
+
+- RsSetFlagBits16 (&Descriptor->I2cSerialBus.TypeSpecificFlags, InitializerOp, 0, 0);
++ RsSetFlagBits16 (&TypeSpecificFlags, InitializerOp, 0, 0);
+ RsCreateBitField (InitializerOp, ACPI_RESTAG_MODE,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (I2cSerialBus.TypeSpecificFlags), 0);
+ break;
+@@ -825,6 +828,9 @@ RsDoI2cSerialBusDescriptor (
+ InitializerOp = RsCompleteNodeAndGetNext (InitializerOp);
+ }
+
++ ACPI_MOVE_16_TO_16(&Descriptor->I2cSerialBus.SlaveAddress, &SlaveAddress);
++ ACPI_MOVE_32_TO_32(&Descriptor->I2cSerialBus.ConnectionSpeed, &ConnectionSpeed);
++ ACPI_MOVE_16_TO_16(&Descriptor->I2cSerialBus.TypeSpecificFlags, &TypeSpecificFlags);
+ MpSaveSerialInfo (Info->MappingOp, Descriptor, ResourceSource);
+ return (Rnode);
+ }
+@@ -854,6 +857,9 @@ RsDoSpiSerialBusDescriptor (
+ UINT16 ResSourceLength;
+ UINT16 VendorLength;
+ UINT16 DescriptorSize;
++ UINT16 DeviceSelection = 0;
++ UINT32 ConnectionSpeed = 0;
++ UINT16 TypeSpecificFlags = 0;
+ UINT32 CurrentByteOffset;
+ UINT32 i;
+
+@@ -903,21 +903,21 @@ RsDoSpiSerialBusDescriptor (
+ {
+ case 0: /* Device Selection [WORD] (_ADR) */
+
+- Descriptor->SpiSerialBus.DeviceSelection = (UINT16) InitializerOp->Asl.Value.Integer;
++ DeviceSelection = (UINT16) InitializerOp->Asl.Value.Integer;
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_ADDRESS,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (SpiSerialBus.DeviceSelection));
+ break;
+
+ case 1: /* Device Polarity [Flag] (_DPL) */
+
+- RsSetFlagBits16 (&Descriptor->SpiSerialBus.TypeSpecificFlags, InitializerOp, 1, 0);
++ RsSetFlagBits16 (&TypeSpecificFlags, InitializerOp, 1, 0);
+ RsCreateBitField (InitializerOp, ACPI_RESTAG_DEVICEPOLARITY,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (SpiSerialBus.TypeSpecificFlags), 1);
+ break;
+
+ case 2: /* Wire Mode [Flag] (_MOD) */
+
+- RsSetFlagBits16 (&Descriptor->SpiSerialBus.TypeSpecificFlags, InitializerOp, 0, 0);
++ RsSetFlagBits16 (&TypeSpecificFlags, InitializerOp, 0, 0);
+ RsCreateBitField (InitializerOp, ACPI_RESTAG_MODE,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (SpiSerialBus.TypeSpecificFlags), 0);
+ break;
+@@ -938,7 +938,7 @@ RsDoSpiSerialBusDescriptor (
+
+ case 5: /* Connection Speed [DWORD] (_SPE) */
+
+- Descriptor->SpiSerialBus.ConnectionSpeed = (UINT32) InitializerOp->Asl.Value.Integer;
++ ConnectionSpeed = (UINT32) InitializerOp->Asl.Value.Integer;
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_SPEED,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (SpiSerialBus.ConnectionSpeed));
+ break;
+@@ -1000,6 +1004,10 @@ RsDoSpiSerialBusDescriptor (
+ InitializerOp = RsCompleteNodeAndGetNext (InitializerOp);
+ }
+
++ ACPI_MOVE_16_TO_16(&Descriptor->SpiSerialBus.DeviceSelection, &DeviceSelection);
++ ACPI_MOVE_32_TO_32(&Descriptor->SpiSerialBus.ConnectionSpeed, &ConnectionSpeed);
++ ACPI_MOVE_16_TO_16(&Descriptor->SpiSerialBus.TypeSpecificFlags, &TypeSpecificFlags);
++
+ MpSaveSerialInfo (Info->MappingOp, Descriptor, ResourceSource);
+ return (Rnode);
+ }
+@@ -1029,6 +1033,10 @@ RsDoUartSerialBusDescriptor (
+ UINT16 ResSourceLength;
+ UINT16 VendorLength;
+ UINT16 DescriptorSize;
++ UINT32 DefaultBaudRate = 0;
++ UINT16 TypeSpecificFlags = 0;
++ UINT16 RxFifoSize = 0;
++ UINT16 TxFifoSize = 0;
+ UINT32 CurrentByteOffset;
+ UINT32 i;
+
+@@ -1078,21 +1078,21 @@ RsDoUartSerialBusDescriptor (
+ {
+ case 0: /* Connection Speed (Baud Rate) [DWORD] (_SPE) */
+
+- Descriptor->UartSerialBus.DefaultBaudRate = (UINT32) InitializerOp->Asl.Value.Integer;
++ DefaultBaudRate = (UINT32) InitializerOp->Asl.Value.Integer;
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_SPEED,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (UartSerialBus.DefaultBaudRate));
+ break;
+
+ case 1: /* Bits Per Byte [Flags] (_LEN) */
+
+- RsSetFlagBits16 (&Descriptor->UartSerialBus.TypeSpecificFlags, InitializerOp, 4, 3);
++ RsSetFlagBits16 (&TypeSpecificFlags, InitializerOp, 4, 3);
+ RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_LENGTH,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (UartSerialBus.TypeSpecificFlags), 4, 3);
+ break;
+
+ case 2: /* Stop Bits [Flags] (_STB) */
+
+- RsSetFlagBits16 (&Descriptor->UartSerialBus.TypeSpecificFlags, InitializerOp, 2, 1);
++ RsSetFlagBits16 (&TypeSpecificFlags, InitializerOp, 2, 1);
+ RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_STOPBITS,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (UartSerialBus.TypeSpecificFlags), 2, 2);
+ break;
+@@ -1106,7 +1106,7 @@ RsDoUartSerialBusDescriptor (
+
+ case 4: /* Endianness [Flag] (_END) */
+
+- RsSetFlagBits16 (&Descriptor->UartSerialBus.TypeSpecificFlags, InitializerOp, 7, 0);
++ RsSetFlagBits16 (&TypeSpecificFlags, InitializerOp, 7, 0);
+ RsCreateBitField (InitializerOp, ACPI_RESTAG_ENDIANNESS,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (UartSerialBus.TypeSpecificFlags), 7);
+ break;
+@@ -1120,21 +1120,21 @@ RsDoUartSerialBusDescriptor (
+
+ case 6: /* Flow Control [Flags] (_FLC) */
+
+- RsSetFlagBits16 (&Descriptor->UartSerialBus.TypeSpecificFlags, InitializerOp, 0, 0);
++ RsSetFlagBits16 (&TypeSpecificFlags, InitializerOp, 0, 0);
+ RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_FLOWCONTROL,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (UartSerialBus.TypeSpecificFlags), 0, 2);
+ break;
+
+ case 7: /* Rx Buffer Size [WORD] (_RXL) */
+
+- Descriptor->UartSerialBus.RxFifoSize = (UINT16) InitializerOp->Asl.Value.Integer;
++ RxFifoSize = (UINT16) InitializerOp->Asl.Value.Integer;
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH_RX,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (UartSerialBus.RxFifoSize));
+ break;
+
+ case 8: /* Tx Buffer Size [WORD] (_TXL) */
+
+- Descriptor->UartSerialBus.TxFifoSize = (UINT16) InitializerOp->Asl.Value.Integer;
++ TxFifoSize = (UINT16) InitializerOp->Asl.Value.Integer;
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH_TX,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (UartSerialBus.TxFifoSize));
+ break;
+@@ -1192,6 +1197,11 @@ RsDoUartSerialBusDescriptor (
+ InitializerOp = RsCompleteNodeAndGetNext (InitializerOp);
+ }
+
++ ACPI_MOVE_32_TO_32(&Descriptor->UartSerialBus.DefaultBaudRate, &DefaultBaudRate);
++ ACPI_MOVE_16_TO_16(&Descriptor->UartSerialBus.TypeSpecificFlags, &TypeSpecificFlags);
++ ACPI_MOVE_16_TO_16(&Descriptor->UartSerialBus.RxFifoSize, &RxFifoSize);
++ ACPI_MOVE_16_TO_16(&Descriptor->UartSerialBus.TxFifoSize, &TxFifoSize);
++
+ MpSaveSerialInfo (Info->MappingOp, Descriptor, ResourceSource);
+ return (Rnode);
+ }
+diff -up acpica-unix2-20140424/source/compiler/aslrestype2w.c.debian-big_endian acpica-unix2-20140424/source/compiler/aslrestype2w.c
+--- acpica-unix2-20140424/source/compiler/aslrestype2w.c.debian-big_endian 2014-04-24 11:49:00.000000000 -0400
++++ acpica-unix2-20140424/source/compiler/aslrestype2w.c 2014-06-06 20:43:34.721825238 -0400
+@@ -81,6 +87,12 @@ RsDoWordIoDescriptor (
+ UINT8 *OptionalFields;
+ UINT16 StringLength = 0;
+ UINT32 OptionIndex = 0;
++ UINT16 ResourceLength = 0;
++ UINT16 Minimum = 0;
++ UINT16 Maximum = 0;
++ UINT16 AddressLength = 0;
++ UINT16 Granularity = 0;
++ UINT16 TranslationOffset = 0;
+ UINT32 CurrentByteOffset;
+ UINT32 i;
+ BOOLEAN ResSourceIndex = FALSE;
+@@ -102,8 +101,7 @@ RsDoWordIoDescriptor (
+ * optional fields present
+ */
+ OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS16);
+- Descriptor->Address16.ResourceLength = (UINT16)
+- (sizeof (AML_RESOURCE_ADDRESS16) -
++ ResourceLength = (UINT16) (sizeof (AML_RESOURCE_ADDRESS16) -
+ sizeof (AML_RESOURCE_LARGE_HEADER));
+
+ /* Process all child initialization nodes */
+@@ -147,7 +147,7 @@ RsDoWordIoDescriptor (
+
+ case 5: /* Address Granularity */
+
+- Descriptor->Address16.Granularity = (UINT16) InitializerOp->Asl.Value.Integer;
++ Granularity = (UINT16) InitializerOp->Asl.Value.Integer;
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Granularity));
+ GranOp = InitializerOp;
+@@ -155,7 +155,7 @@ RsDoWordIoDescriptor (
+
+ case 6: /* Address Min */
+
+- Descriptor->Address16.Minimum = (UINT16) InitializerOp->Asl.Value.Integer;
++ Minimum = (UINT16) InitializerOp->Asl.Value.Integer;
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Minimum));
+ MinOp = InitializerOp;
+@@ -163,7 +163,7 @@ RsDoWordIoDescriptor (
+
+ case 7: /* Address Max */
+
+- Descriptor->Address16.Maximum = (UINT16) InitializerOp->Asl.Value.Integer;
++ Maximum = (UINT16) InitializerOp->Asl.Value.Integer;
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Maximum));
+ MaxOp = InitializerOp;
+@@ -171,14 +171,14 @@ RsDoWordIoDescriptor (
+
+ case 8: /* Translation Offset */
+
+- Descriptor->Address16.TranslationOffset = (UINT16) InitializerOp->Asl.Value.Integer;
++ TranslationOffset = (UINT16) InitializerOp->Asl.Value.Integer;
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.TranslationOffset));
+ break;
+
+ case 9: /* Address Length */
+
+- Descriptor->Address16.AddressLength = (UINT16) InitializerOp->Asl.Value.Integer;
++ AddressLength = (UINT16) InitializerOp->Asl.Value.Integer;
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.AddressLength));
+ LengthOp = InitializerOp;
+@@ -190,7 +190,7 @@ RsDoWordIoDescriptor (
+ {
+ OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer;
+ OptionIndex++;
+- Descriptor->Address16.ResourceLength++;
++ ResourceLength++;
+ ResSourceIndex = TRUE;
+ }
+ break;
+@@ -202,8 +201,7 @@ RsDoWordIoDescriptor (
+ {
+ if (StringLength)
+ {
+- Descriptor->Address16.ResourceLength = (UINT16)
+- (Descriptor->Address16.ResourceLength + StringLength);
++ ResourceLength = (UINT16) (ResourceLength + StringLength);
+
+ strcpy ((char *)
+ &OptionalFields[OptionIndex],
+@@ -263,13 +270,20 @@ RsDoWordIoDescriptor (
+ /* Validate the Min/Max/Len/Gran values */
+
+ RsLargeAddressCheck (
+- (UINT64) Descriptor->Address16.Minimum,
+- (UINT64) Descriptor->Address16.Maximum,
+- (UINT64) Descriptor->Address16.AddressLength,
+- (UINT64) Descriptor->Address16.Granularity,
++ Minimum,
++ Maximum,
++ AddressLength,
++ Granularity,
+ Descriptor->Address16.Flags,
+ MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp);
+
++ ACPI_MOVE_16_TO_16(&Descriptor->Address16.ResourceLength, &ResourceLength);
++ ACPI_MOVE_16_TO_16(&Descriptor->Address16.Minimum, &Minimum);
++ ACPI_MOVE_16_TO_16(&Descriptor->Address16.Maximum, &Maximum);
++ ACPI_MOVE_16_TO_16(&Descriptor->Address16.AddressLength, &AddressLength);
++ ACPI_MOVE_16_TO_16(&Descriptor->Address16.Granularity, &Granularity);
++ ACPI_MOVE_16_TO_16(&Descriptor->Address16.TranslationOffset, &TranslationOffset);
++
+ Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS16) +
+ OptionIndex + StringLength;
+ return (Rnode);
+@@ -302,6 +308,12 @@ RsDoWordBusNumberDescriptor (
+ UINT8 *OptionalFields;
+ UINT16 StringLength = 0;
+ UINT32 OptionIndex = 0;
++ UINT16 ResourceLength = 0;
++ UINT16 Minimum = 0;
++ UINT16 Maximum = 0;
++ UINT16 AddressLength = 0;
++ UINT16 Granularity = 0;
++ UINT16 TranslationOffset = 0;
+ UINT32 CurrentByteOffset;
+ UINT32 i;
+ BOOLEAN ResSourceIndex = FALSE;
+@@ -323,8 +322,7 @@ RsDoWordBusNumberDescriptor (
+ * optional fields present
+ */
+ OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS16);
+- Descriptor->Address16.ResourceLength = (UINT16)
+- (sizeof (AML_RESOURCE_ADDRESS16) -
++ ResourceLength = (UINT16) (sizeof (AML_RESOURCE_ADDRESS16) -
+ sizeof (AML_RESOURCE_LARGE_HEADER));
+
+ /* Process all child initialization nodes */
+@@ -361,8 +360,7 @@ RsDoWordBusNumberDescriptor (
+
+ case 4: /* Address Granularity */
+
+- Descriptor->Address16.Granularity =
+- (UINT16) InitializerOp->Asl.Value.Integer;
++ Granularity = (UINT16) InitializerOp->Asl.Value.Integer;
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Granularity));
+ GranOp = InitializerOp;
+@@ -370,8 +369,7 @@ RsDoWordBusNumberDescriptor (
+
+ case 5: /* Min Address */
+
+- Descriptor->Address16.Minimum =
+- (UINT16) InitializerOp->Asl.Value.Integer;
++ Minimum = (UINT16) InitializerOp->Asl.Value.Integer;
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Minimum));
+ MinOp = InitializerOp;
+@@ -379,8 +378,7 @@ RsDoWordBusNumberDescriptor (
+
+ case 6: /* Max Address */
+
+- Descriptor->Address16.Maximum =
+- (UINT16) InitializerOp->Asl.Value.Integer;
++ Maximum = (UINT16) InitializerOp->Asl.Value.Integer;
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Maximum));
+ MaxOp = InitializerOp;
+@@ -388,16 +386,14 @@ RsDoWordBusNumberDescriptor (
+
+ case 7: /* Translation Offset */
+
+- Descriptor->Address16.TranslationOffset =
+- (UINT16) InitializerOp->Asl.Value.Integer;
++ TranslationOffset = (UINT16) InitializerOp->Asl.Value.Integer;
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.TranslationOffset));
+ break;
+
+ case 8: /* Address Length */
+
+- Descriptor->Address16.AddressLength =
+- (UINT16) InitializerOp->Asl.Value.Integer;
++ AddressLength = (UINT16) InitializerOp->Asl.Value.Integer;
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.AddressLength));
+ LengthOp = InitializerOp;
+@@ -409,7 +409,7 @@ RsDoWordBusNumberDescriptor (
+ {
+ OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer;
+ OptionIndex++;
+- Descriptor->Address16.ResourceLength++;
++ ResourceLength++;
+ ResSourceIndex = TRUE;
+ }
+ break;
+@@ -421,8 +420,7 @@ RsDoWordBusNumberDescriptor (
+ {
+ if (StringLength)
+ {
+- Descriptor->Address16.ResourceLength = (UINT16)
+- (Descriptor->Address16.ResourceLength + StringLength);
++ ResourceLength = (UINT16) (ResourceLength + StringLength);
+
+ strcpy ((char *)
+ &OptionalFields[OptionIndex],
+@@ -468,13 +475,20 @@ RsDoWordBusNumberDescriptor (
+ /* Validate the Min/Max/Len/Gran values */
+
+ RsLargeAddressCheck (
+- (UINT64) Descriptor->Address16.Minimum,
+- (UINT64) Descriptor->Address16.Maximum,
+- (UINT64) Descriptor->Address16.AddressLength,
+- (UINT64) Descriptor->Address16.Granularity,
++ Minimum,
++ Maximum,
++ AddressLength,
++ Granularity,
+ Descriptor->Address16.Flags,
+ MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp);
+
++ ACPI_MOVE_16_TO_16(&Descriptor->Address16.ResourceLength, &ResourceLength);
++ ACPI_MOVE_16_TO_16(&Descriptor->Address16.Minimum, &Minimum);
++ ACPI_MOVE_16_TO_16(&Descriptor->Address16.Maximum, &Maximum);
++ ACPI_MOVE_16_TO_16(&Descriptor->Address16.AddressLength, &AddressLength);
++ ACPI_MOVE_16_TO_16(&Descriptor->Address16.Granularity, &Granularity);
++ ACPI_MOVE_16_TO_16(&Descriptor->Address16.TranslationOffset, &TranslationOffset);
++
+ Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS16) +
+ OptionIndex + StringLength;
+ return (Rnode);
+@@ -507,6 +513,12 @@ RsDoWordSpaceDescriptor (
+ UINT8 *OptionalFields;
+ UINT16 StringLength = 0;
+ UINT32 OptionIndex = 0;
++ UINT16 Minimum = 0;
++ UINT16 Maximum = 0;
++ UINT16 AddressLength = 0;
++ UINT16 Granularity = 0;
++ UINT16 TranslationOffset = 0;
++ UINT16 ResourceLength = 0;
+ UINT32 CurrentByteOffset;
+ UINT32 i;
+ BOOLEAN ResSourceIndex = FALSE;
+@@ -527,8 +526,7 @@ RsDoWordSpaceDescriptor (
+ * optional fields present
+ */
+ OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS16);
+- Descriptor->Address16.ResourceLength = (UINT16)
+- (sizeof (AML_RESOURCE_ADDRESS16) -
++ ResourceLength = (UINT16) (sizeof (AML_RESOURCE_ADDRESS16) -
+ sizeof (AML_RESOURCE_LARGE_HEADER));
+
+ /* Process all child initialization nodes */
+@@ -577,8 +576,7 @@ RsDoWordSpaceDescriptor (
+
+ case 6: /* Address Granularity */
+
+- Descriptor->Address16.Granularity =
+- (UINT16) InitializerOp->Asl.Value.Integer;
++ Granularity = (UINT16) InitializerOp->Asl.Value.Integer;
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Granularity));
+ GranOp = InitializerOp;
+@@ -586,8 +585,7 @@ RsDoWordSpaceDescriptor (
+
+ case 7: /* Min Address */
+
+- Descriptor->Address16.Minimum =
+- (UINT16) InitializerOp->Asl.Value.Integer;
++ Minimum = (UINT16) InitializerOp->Asl.Value.Integer;
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Minimum));
+ MinOp = InitializerOp;
+@@ -595,8 +594,7 @@ RsDoWordSpaceDescriptor (
+
+ case 8: /* Max Address */
+
+- Descriptor->Address16.Maximum =
+- (UINT16) InitializerOp->Asl.Value.Integer;
++ Maximum = (UINT16) InitializerOp->Asl.Value.Integer;
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Maximum));
+ MaxOp = InitializerOp;
+@@ -604,16 +602,14 @@ RsDoWordSpaceDescriptor (
+
+ case 9: /* Translation Offset */
+
+- Descriptor->Address16.TranslationOffset =
+- (UINT16) InitializerOp->Asl.Value.Integer;
++ TranslationOffset = (UINT16) InitializerOp->Asl.Value.Integer;
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.TranslationOffset));
+ break;
+
+ case 10: /* Address Length */
+
+- Descriptor->Address16.AddressLength =
+- (UINT16) InitializerOp->Asl.Value.Integer;
++ AddressLength = (UINT16) InitializerOp->Asl.Value.Integer;
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.AddressLength));
+ LengthOp = InitializerOp;
+@@ -625,7 +625,7 @@ RsDoWordSpaceDescriptor (
+ {
+ OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer;
+ OptionIndex++;
+- Descriptor->Address16.ResourceLength++;
++ ResourceLength++;
+ ResSourceIndex = TRUE;
+ }
+ break;
+@@ -637,8 +636,7 @@ RsDoWordSpaceDescriptor (
+ {
+ if (StringLength)
+ {
+- Descriptor->Address16.ResourceLength = (UINT16)
+- (Descriptor->Address16.ResourceLength + StringLength);
++ ResourceLength = (UINT16) (ResourceLength + StringLength);
+
+ strcpy ((char *)
+ &OptionalFields[OptionIndex],
+@@ -684,13 +691,20 @@ RsDoWordSpaceDescriptor (
+ /* Validate the Min/Max/Len/Gran values */
+
+ RsLargeAddressCheck (
+- (UINT64) Descriptor->Address16.Minimum,
+- (UINT64) Descriptor->Address16.Maximum,
+- (UINT64) Descriptor->Address16.AddressLength,
+- (UINT64) Descriptor->Address16.Granularity,
++ Minimum,
++ Maximum,
++ AddressLength,
++ Granularity,
+ Descriptor->Address16.Flags,
+ MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp);
+
++ ACPI_MOVE_16_TO_16(&Descriptor->Address16.ResourceLength, &ResourceLength);
++ ACPI_MOVE_16_TO_16(&Descriptor->Address16.Minimum, &Minimum);
++ ACPI_MOVE_16_TO_16(&Descriptor->Address16.Maximum, &Maximum);
++ ACPI_MOVE_16_TO_16(&Descriptor->Address16.AddressLength, &AddressLength);
++ ACPI_MOVE_16_TO_16(&Descriptor->Address16.Granularity, &Granularity);
++ ACPI_MOVE_16_TO_16(&Descriptor->Address16.TranslationOffset, &TranslationOffset);
++
+ Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS16) +
+ OptionIndex + StringLength;
+ return (Rnode);
+diff -up acpica-unix2-20140424/source/include/acmacros.h.debian-big_endian acpica-unix2-20140424/source/include/acmacros.h
+--- acpica-unix2-20140424/source/include/acmacros.h.debian-big_endian 2014-04-24 11:49:05.000000000 -0400
++++ acpica-unix2-20140424/source/include/acmacros.h 2014-06-06 20:43:34.721825238 -0400
+@@ -111,7 +111,8 @@
+
+ /* 32-bit source, 16/32/64 destination */
+
+-#define ACPI_MOVE_32_TO_16(d, s) ACPI_MOVE_16_TO_16(d, s) /* Truncate to 16 */
++#define ACPI_MOVE_32_TO_16(d, s) {(( UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[3];\
++ (( UINT8 *)(void *)(d))[1] = ((UINT8 *)(void *)(s))[2];}
+
+ #define ACPI_MOVE_32_TO_32(d, s) {(( UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[3];\
+ (( UINT8 *)(void *)(d))[1] = ((UINT8 *)(void *)(s))[2];\
+@@ -126,9 +127,13 @@
+
+ /* 64-bit source, 16/32/64 destination */
+
+-#define ACPI_MOVE_64_TO_16(d, s) ACPI_MOVE_16_TO_16(d, s) /* Truncate to 16 */
++#define ACPI_MOVE_64_TO_16(d, s) {(( UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[7];\
++ (( UINT8 *)(void *)(d))[1] = ((UINT8 *)(void *)(s))[6];}
+
+-#define ACPI_MOVE_64_TO_32(d, s) ACPI_MOVE_32_TO_32(d, s) /* Truncate to 32 */
++#define ACPI_MOVE_64_TO_32(d, s) {(( UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[7];\
++ (( UINT8 *)(void *)(d))[1] = ((UINT8 *)(void *)(s))[6];\
++ (( UINT8 *)(void *)(d))[2] = ((UINT8 *)(void *)(s))[5];\
++ (( UINT8 *)(void *)(d))[3] = ((UINT8 *)(void *)(s))[4];}
+
+ #define ACPI_MOVE_64_TO_64(d, s) {(( UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[7];\
+ (( UINT8 *)(void *)(d))[1] = ((UINT8 *)(void *)(s))[6];\
+@@ -155,7 +160,9 @@
+
+ /* 32-bit source, 16/32/64 destination */
+
+-#define ACPI_MOVE_32_TO_16(d, s) ACPI_MOVE_16_TO_16(d, s) /* Truncate to 16 */
++#define ACPI_MOVE_32_TO_16(d, s) {(( UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[0];\
++ (( UINT8 *)(void *)(d))[1] = ((UINT8 *)(void *)(s))[1];}
++
+ #define ACPI_MOVE_32_TO_32(d, s) *(UINT32 *)(void *)(d) = *(UINT32 *)(void *)(s)
+ #define ACPI_MOVE_32_TO_64(d, s) *(UINT64 *)(void *)(d) = *(UINT32 *)(void *)(s)
+
+diff -up acpica-unix2-20140424/source/include/platform/aclinux.h.debian-big_endian acpica-unix2-20140424/source/include/platform/aclinux.h
+--- acpica-unix2-20140424/source/include/platform/aclinux.h.debian-big_endian 2014-04-24 11:49:06.000000000 -0400
++++ acpica-unix2-20140424/source/include/platform/aclinux.h 2014-06-06 20:44:28.781825238 -0400
+@@ -167,6 +167,7 @@
+ #include <stdlib.h>
+ #include <ctype.h>
+ #include <unistd.h>
++#include <endian.h>
+
+ /* Define/disable kernel-specific declarators */
+
+@@ -179,8 +180,7 @@
+ #define ACPI_FLUSH_CPU_CACHE()
+ #define ACPI_CAST_PTHREAD_T(Pthread) ((ACPI_THREAD_ID) (Pthread))
+
+-#if defined(__ia64__) || defined(__x86_64__) ||\
+- defined(__aarch64__) || defined(__PPC64__)
++#if __SIZEOF_LONG__ == 8
+ #define ACPI_MACHINE_WIDTH 64
+ #define COMPILER_DEPENDENT_INT64 long
+ #define COMPILER_DEPENDENT_UINT64 unsigned long
+@@ -191,6 +191,10 @@
+ #define ACPI_USE_NATIVE_DIVIDE
+ #endif
+
++#if __BYTE_ORDER == __BIG_ENDIAN
++#define ACPI_BIG_ENDIAN
++#endif
++
+ #ifndef __cdecl
+ #define __cdecl
+ #endif