[iasl: 3/4] Merge branch 'f18'

Richard W.M. Jones rjones at fedoraproject.org
Wed Oct 17 11:58:08 UTC 2012


commit 7378b77e8adc49965332e0ef4afac8d9e0c3c94b
Merge: 2255dbb d54e8b5
Author: Paolo Bonzini <pbonzini at redhat.com>
Date:   Wed Oct 17 13:19:30 2012 +0200

    Merge branch 'f18'
    
    Conflicts:
    	iasl.spec
    	debian-big_endian.patch
    	debian-unaligned.patch

 debian-big_endian.patch | 2480 +++++++++++++++++++++++++++++++++++++++++++++++
 debian-unaligned.patch  |  152 +++
 iasl.spec               |   11 +-
 3 files changed, 2642 insertions(+), 1 deletions(-)
---
diff --cc debian-big_endian.patch
index 0000000,dd9fa80..2607185
mode 000000,100644..100644
--- a/debian-big_endian.patch
+++ b/debian-big_endian.patch
@@@ -1,0 -1,2120 +1,2480 @@@
+ use the ACPI_MOVE_<N>_TO_<M> macros to swap the data written to the AML file on
+ big endian architectures (the macros themselves required a few fixes to work
+ correctly).
+ In some areas the use of temporary variables was necessary to be able to perform
+ sanity checks on the data before actually swapping the bytes.
+ 
+ Signed-off-by: Mattia Dongili <malattia at linux.it>
++Signed-off-by: Paolo Bonzini <pbonzini at redhat.com>
+ ---
 - compiler/aslcodegen.c      |  107 +++++++++++++++++++++--------------
 - compiler/aslopcodes.c      |    4 +
 - compiler/aslrestype1.c     |   68 +++++++++++++++-------
 - compiler/aslrestype1i.c    |   29 +++++----
 - compiler/aslrestype2.c     |   25 +++++---
 - compiler/aslrestype2d.c    |  134 +++++++++++++++++++++++++--------------------
 - compiler/aslrestype2e.c    |  117 +++++++++++++++++++++++++++------------
 - compiler/aslrestype2q.c    |  117 +++++++++++++++++++++++++--------------
 - compiler/aslrestype2w.c    |  127 +++++++++++++++++++++++++-----------------
 - include/acmacros.h         |   15 +++--
 - include/platform/aclinux.h |    7 ++
 - 11 files changed, 470 insertions(+), 280 deletions(-)
++ source/compiler/aslcodegen.c      | 108 +++++++++++++++++-------------
++ source/compiler/aslopcodes.c      |   4 +-
++ source/compiler/aslrestype1.c     |  69 ++++++++++++++------
++ source/compiler/aslrestype1i.c    |  38 +++++++----
++ source/compiler/aslrestype2.c     |  25 ++++---
++ source/compiler/aslrestype2d.c    | 134 +++++++++++++++++++++-----------------
++ source/compiler/aslrestype2e.c    | 117 +++++++++++++++++++++++----------
++ source/compiler/aslrestype2q.c    | 117 +++++++++++++++++++++------------
++ source/compiler/aslrestype2s.c    |  86 +++++++++++++++++-------
++ source/compiler/aslrestype2w.c    | 127 +++++++++++++++++++++---------------
++ source/include/acmacros.h         |  15 +++--
++ source/include/platform/aclinux.h |   7 +-
++ 12 file modificati, 541 inserzioni(+), 306 rimozioni(-)
+ 
 -Index: b/include/platform/aclinux.h
 -===================================================================
 ---- a/include/platform/aclinux.h	2010-07-02 21:42:26.833348957 +0900
 -+++ b/include/platform/aclinux.h	2010-07-04 11:18:19.486018564 +0900
 -@@ -156,13 +156,14 @@
 - #include <stdlib.h>
 - #include <ctype.h>
 - #include <unistd.h>
 -+#include <endian.h>
 - 
 - /* Host-dependent types and defines for user-space ACPICA */
 - 
 - #define ACPI_FLUSH_CPU_CACHE()
 - #define ACPI_THREAD_ID              pthread_t
 - 
 --#if defined(__ia64__) || defined(__x86_64__)
 -+#if __SIZEOF_LONG__ == 8
 - #define ACPI_MACHINE_WIDTH          64
 - #define COMPILER_DEPENDENT_INT64    long
 - #define COMPILER_DEPENDENT_UINT64   unsigned long
 -@@ -173,6 +174,10 @@
 - #define ACPI_USE_NATIVE_DIVIDE
 - #endif
 - 
 -+#if __BYTE_ORDER == __BIG_ENDIAN
 -+#define ACPI_BIG_ENDIAN
 -+#endif
 -+
 - #ifndef __cdecl
 - #define __cdecl
 - #endif
 -Index: b/compiler/aslcodegen.c
 -===================================================================
 ---- a/compiler/aslcodegen.c	2010-07-02 21:42:26.601348618 +0900
 -+++ b/compiler/aslcodegen.c	2010-07-04 11:18:19.490018083 +0900
 -@@ -311,16 +311,12 @@
++diff --git a/source/compiler/aslcodegen.c b/source/compiler/aslcodegen.c
++index 2252ab4..c3c3e06 100644
++--- a/source/compiler/aslcodegen.c
+++++ b/source/compiler/aslcodegen.c
++@@ -311,16 +311,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 */
+  
 -@@ -343,45 +339,46 @@
++@@ -343,50 +339,51 @@ CgWriteAmlOpcode (
+  
+          /* Special opcodes for within a field definition */
+  
 --        Aml.Opcode = 0x00;
 -+        AmlOpcode = 0x00;
++-        Aml.Opcode = AML_FIELD_OFFSET_OP;
+++        AmlOpcode = AML_FIELD_OFFSET_OP;
+          break;
+  
+      case AML_INT_ACCESSFIELD_OP:
+  
 --        Aml.Opcode = 0x01;
 -+        AmlOpcode = 0x01;
++-        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;
+      }
+  
 -@@ -392,8 +389,8 @@
++@@ -397,8 +394,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)
+          {
 -@@ -403,7 +400,7 @@
++@@ -408,7 +405,7 @@ CgWriteAmlOpcode (
+               */
+              PkgLenFirstByte = (UINT8)
+                  (((UINT32) (Op->Asl.AmlPkgLenBytes - 1) << 6) |
+ -                (PkgLen.LenBytes[0] & 0x0F));
+ +                (PkgLen & 0x0F));
+  
+              CgLocalWriteAmlData (Op, &PkgLenFirstByte, 1);
+  
 -@@ -411,37 +408,44 @@
++@@ -416,37 +413,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:
 -@@ -473,6 +477,7 @@
++@@ -478,6 +482,7 @@ CgWriteTableHeader (
+      ACPI_PARSE_OBJECT       *Op)
+  {
+      ACPI_PARSE_OBJECT       *Child;
+ +    UINT32 DWord;
+  
+  
+      /* AML filename */
 -@@ -509,19 +514,19 @@
++@@ -514,7 +519,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 */
+  
 -     strncpy (TableHeader.AslCompilerId, CompilerCreatorId, 4);
++@@ -522,11 +527,12 @@ CgWriteTableHeader (
+  
+      /* Compiler version */
 --
 --    TableHeader.AslCompilerRevision = CompilerCreatorRevision;
 -+    DWord = CompilerCreatorRevision;
++ 
++-    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));
 -@@ -585,7 +590,10 @@
++@@ -590,7 +596,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 */
 -@@ -603,13 +611,24 @@
++@@ -608,13 +617,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:
+  
 -Index: b/compiler/aslopcodes.c
 -===================================================================
 ---- a/compiler/aslopcodes.c	2010-07-02 21:42:26.613360661 +0900
 -+++ b/compiler/aslopcodes.c	2010-07-04 11:18:19.490018083 +0900
 -@@ -449,6 +449,7 @@
++diff --git a/source/compiler/aslopcodes.c b/source/compiler/aslopcodes.c
++index cddc945..6deddc9 100644
++--- a/source/compiler/aslopcodes.c
+++++ b/source/compiler/aslopcodes.c
++@@ -548,6 +548,7 @@ OpcDoUnicode (
+      UINT32                  i;
+      UINT8                   *AsciiString;
+      UINT16                  *UnicodeString;
+ +    UINT16                  UChar;
+      ACPI_PARSE_OBJECT       *BufferLengthOp;
+  
+  
 -@@ -475,7 +476,8 @@
++@@ -574,7 +575,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);
+      }
+  
+      /*
 -Index: b/compiler/aslrestype1.c
 -===================================================================
 ---- a/compiler/aslrestype1.c	2010-07-02 21:42:26.661349406 +0900
 -+++ b/compiler/aslrestype1.c	2010-07-04 11:18:19.490018083 +0900
 -@@ -226,6 +226,11 @@
++diff --git a/source/compiler/aslrestype1.c b/source/compiler/aslrestype1.c
++index 5b92151..b1fa5f5 100644
++--- a/source/compiler/aslrestype1.c
+++++ b/source/compiler/aslrestype1.c
++@@ -225,6 +225,11 @@ RsDoMemory24Descriptor (
++     ACPI_PARSE_OBJECT       *MaxOp = NULL;
+      ACPI_PARSE_OBJECT       *LengthOp = NULL;
 -     ACPI_PARSE_OBJECT       *AlignOp = NULL;
+      ASL_RESOURCE_NODE       *Rnode;
+ +    UINT16                  Minimum = 0;
+ +    UINT16                  Maximum = 0;
+ +    UINT16                  AddressLength = 0;
+ +    UINT16                  Alignment = 0;
+ +    UINT16                  ResourceLength;
+      UINT32                  i;
+  
+  
 -@@ -234,7 +239,8 @@
++@@ -233,7 +238,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 */
+  
 -@@ -251,7 +257,7 @@
++@@ -250,7 +256,7 @@ RsDoMemory24Descriptor (
+  
+          case 1: /* Min Address */
+  
+ -            Descriptor->Memory24.Minimum = (UINT16) InitializerOp->Asl.Value.Integer;
 -+            Minimum = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
+++            Minimum = (UINT16) InitializerOp->Asl.Value.Integer;
++             RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.Minimum));
+              MinOp = InitializerOp;
 -@@ -259,7 +265,7 @@
++@@ -258,7 +264,7 @@ RsDoMemory24Descriptor (
+  
+          case 2: /* Max Address */
+  
+ -            Descriptor->Memory24.Maximum = (UINT16) InitializerOp->Asl.Value.Integer;
 -+            Maximum = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
+++            Maximum = (UINT16) InitializerOp->Asl.Value.Integer;
++             RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.Maximum));
+              MaxOp = InitializerOp;
 -@@ -267,7 +273,7 @@
++@@ -266,14 +272,14 @@ RsDoMemory24Descriptor (
+  
+          case 3: /* Alignment */
+  
+ -            Descriptor->Memory24.Alignment = (UINT16) InitializerOp->Asl.Value.Integer;
 -+            Alignment = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_ALIGNMENT,
+++            Alignment = (UINT16) InitializerOp->Asl.Value.Integer;
++             RsCreateWordField (InitializerOp, ACPI_RESTAG_ALIGNMENT,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.Alignment));
 -             AlignOp = InitializerOp;
 -@@ -275,7 +281,7 @@
++             break;
+  
+          case 4: /* Length */
+  
+ -            Descriptor->Memory24.AddressLength = (UINT16) InitializerOp->Asl.Value.Integer;
 -+            AddressLength = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
+++            AddressLength = (UINT16) InitializerOp->Asl.Value.Integer;
++             RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.AddressLength));
+              LengthOp = InitializerOp;
 -@@ -298,12 +304,17 @@
++@@ -296,12 +303,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);
++         MinOp, MaxOp, LengthOp, NULL, Op);
+  
+ +    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);
+  }
+  
 -@@ -334,6 +345,11 @@
++@@ -332,6 +344,11 @@ RsDoMemory32Descriptor (
+      ACPI_PARSE_OBJECT       *LengthOp = NULL;
+      ACPI_PARSE_OBJECT       *AlignOp = NULL;
+      ASL_RESOURCE_NODE       *Rnode;
+ +    UINT32                  Minimum = 0;
+ +    UINT32                  Maximum = 0;
+ +    UINT32                  AddressLength = 0;
+ +    UINT32                  Alignment = 0;
+ +    UINT16                  ResourceLength;
+      UINT32                  i;
+  
+  
 -@@ -342,7 +358,8 @@
++@@ -340,7 +357,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 */
+  
 -@@ -359,7 +376,7 @@
++@@ -357,7 +375,7 @@ RsDoMemory32Descriptor (
+  
+          case 1:  /* Min Address */
+  
+ -            Descriptor->Memory32.Minimum = (UINT32) InitializerOp->Asl.Value.Integer;
 -+            Minimum = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
+++            Minimum = (UINT32) InitializerOp->Asl.Value.Integer;
++             RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.Minimum));
+              MinOp = InitializerOp;
 -@@ -367,7 +384,7 @@
++@@ -365,7 +383,7 @@ RsDoMemory32Descriptor (
+  
+          case 2: /* Max Address */
+  
+ -            Descriptor->Memory32.Maximum = (UINT32) InitializerOp->Asl.Value.Integer;
 -+            Maximum = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
+++            Maximum = (UINT32) InitializerOp->Asl.Value.Integer;
++             RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.Maximum));
+              MaxOp = InitializerOp;
 -@@ -375,7 +392,7 @@
++@@ -373,7 +391,7 @@ RsDoMemory32Descriptor (
+  
+          case 3: /* Alignment */
+  
+ -            Descriptor->Memory32.Alignment = (UINT32) InitializerOp->Asl.Value.Integer;
 -+            Alignment = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_ALIGNMENT,
+++            Alignment = (UINT32) InitializerOp->Asl.Value.Integer;
++             RsCreateDwordField (InitializerOp, ACPI_RESTAG_ALIGNMENT,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.Alignment));
+              AlignOp = InitializerOp;
 -@@ -383,7 +400,7 @@
++@@ -381,7 +399,7 @@ RsDoMemory32Descriptor (
+  
+          case 4: /* Length */
+  
+ -            Descriptor->Memory32.AddressLength = (UINT32) InitializerOp->Asl.Value.Integer;
 -+            AddressLength = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
+++            AddressLength = (UINT32) InitializerOp->Asl.Value.Integer;
++             RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.AddressLength));
+              LengthOp = InitializerOp;
 -@@ -406,12 +423,17 @@
++@@ -404,12 +422,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);
++         MinOp, MaxOp, LengthOp, AlignOp, Op);
+  
+ +    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);
+  }
+  
 -@@ -438,6 +460,7 @@
++@@ -436,6 +459,7 @@ RsDoMemory32FixedDescriptor (
+      AML_RESOURCE            *Descriptor;
+      ACPI_PARSE_OBJECT       *InitializerOp;
+      ASL_RESOURCE_NODE       *Rnode;
+ +    UINT16                  ResourceLength;
+      UINT32                  i;
+  
+  
 -@@ -446,7 +469,8 @@
++@@ -444,7 +468,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 */
+  
 -@@ -463,14 +487,16 @@
++@@ -461,14 +486,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);
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_BASEADDRESS,
++             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);
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
++             RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (FixedMemory32.AddressLength));
+              break;
 -Index: b/compiler/aslrestype1i.c
 -===================================================================
 ---- a/compiler/aslrestype1i.c	2010-07-02 21:42:26.649349305 +0900
 -+++ b/compiler/aslrestype1i.c	2010-07-04 11:18:19.494017882 +0900
 -@@ -275,6 +275,7 @@
++diff --git a/source/compiler/aslrestype1i.c b/source/compiler/aslrestype1i.c
++index 8335e8f..097eb05 100644
++--- a/source/compiler/aslrestype1i.c
+++++ b/source/compiler/aslrestype1i.c
++@@ -275,6 +275,8 @@ RsDoFixedDmaDescriptor (
++     AML_RESOURCE            *Descriptor;
++     ACPI_PARSE_OBJECT       *InitializerOp;
++     ASL_RESOURCE_NODE       *Rnode;
+++    UINT16                  RequestLines = 0;
+++    UINT16                  Channels = 0;
++     UINT32                  i;
++ 
++ 
++@@ -293,14 +295,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;
++@@ -324,6 +326,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);
++ }
++ 
++@@ -351,6 +356,7 @@ RsDoFixedIoDescriptor (
+      ACPI_PARSE_OBJECT       *InitializerOp;
+      ACPI_PARSE_OBJECT       *AddressOp = NULL;
+      ASL_RESOURCE_NODE       *Rnode;
+ +    UINT16                  Address = 0;
+      UINT32                  i;
+  
+  
 -@@ -293,8 +294,7 @@
++@@ -369,8 +375,7 @@ RsDoFixedIoDescriptor (
+          {
+          case 0: /* Base Address */
+  
+ -            Descriptor->FixedIo.Address =
+ -                (UINT16) InitializerOp->Asl.Value.Integer;
 -+            Address = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_BASEADDRESS,
+++            Address = (UINT16) InitializerOp->Asl.Value.Integer;
++             RsCreateWordField (InitializerOp, ACPI_RESTAG_BASEADDRESS,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (FixedIo.Address));
+              AddressOp = InitializerOp;
 -@@ -324,11 +324,13 @@
++@@ -400,11 +405,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);
+  }
+  
 -@@ -359,6 +361,8 @@
++@@ -435,6 +442,8 @@ RsDoIoDescriptor (
+      ACPI_PARSE_OBJECT       *LengthOp = NULL;
+      ACPI_PARSE_OBJECT       *AlignOp = NULL;
+      ASL_RESOURCE_NODE       *Rnode;
+ +    UINT16                  Minimum = 0;
+ +    UINT16                  Maximum = 0;
+      UINT32                  i;
+  
+  
 -@@ -384,8 +388,7 @@
++@@ -460,8 +469,7 @@ RsDoIoDescriptor (
+  
+          case 1:  /* Min Address */
+  
+ -            Descriptor->Io.Minimum =
+ -                (UINT16) InitializerOp->Asl.Value.Integer;
 -+            Minimum = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
+++            Minimum = (UINT16) InitializerOp->Asl.Value.Integer;
++             RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Io.Minimum));
+              MinOp = InitializerOp;
 -@@ -393,8 +396,7 @@
++@@ -469,8 +477,7 @@ RsDoIoDescriptor (
+  
+          case 2: /* Max Address */
+  
+ -            Descriptor->Io.Maximum =
+ -                (UINT16) InitializerOp->Asl.Value.Integer;
 -+            Maximum = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
+++            Maximum = (UINT16) InitializerOp->Asl.Value.Integer;
++             RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Io.Maximum));
+              MaxOp = InitializerOp;
 -@@ -435,12 +437,15 @@
++@@ -511,12 +518,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);
++         MinOp, MaxOp, LengthOp, AlignOp, Op);
+  
+ +    ACPI_MOVE_16_TO_16(&Descriptor->Io.Minimum, &Minimum);
+ +    ACPI_MOVE_16_TO_16(&Descriptor->Io.Maximum, &Maximum);
+ +
+      return (Rnode);
+  }
+  
 -@@ -561,9 +566,9 @@
++@@ -637,9 +647,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);
+  }
+  
 -@@ -663,6 +668,6 @@
++@@ -739,6 +749,6 @@ RsDoIrqNoFlagsDescriptor (
+  
+      /* Now we can set the interrupt mask */
+  
+ -    Descriptor->Irq.IrqMask = IrqMask;
+ +    ACPI_MOVE_16_TO_16(&Descriptor->Irq.IrqMask, &IrqMask);
+      return (Rnode);
+  }
 -Index: b/compiler/aslrestype2.c
 -===================================================================
 ---- a/compiler/aslrestype2.c	2010-07-02 21:42:26.625349241 +0900
 -+++ b/compiler/aslrestype2.c	2010-07-04 11:18:19.494017882 +0900
 -@@ -152,6 +152,7 @@
++diff --git a/source/compiler/aslrestype2.c b/source/compiler/aslrestype2.c
++index f0de854..b6d8d1d 100644
++--- a/source/compiler/aslrestype2.c
+++++ b/source/compiler/aslrestype2.c
++@@ -151,6 +151,7 @@ RsDoGeneralRegisterDescriptor (
+      AML_RESOURCE            *Descriptor;
+      ACPI_PARSE_OBJECT       *InitializerOp;
+      ASL_RESOURCE_NODE       *Rnode;
+ +    UINT16                  ResourceLength;
+      UINT32                  i;
+  
+  
 -@@ -160,7 +161,9 @@
++@@ -159,7 +160,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 */
+  
 -@@ -191,7 +194,8 @@
++@@ -190,7 +193,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);
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_ADDRESS,
++             RsCreateQwordField (InitializerOp, ACPI_RESTAG_ADDRESS,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (GenericReg.Address));
+              break;
 -@@ -249,6 +253,7 @@
++@@ -248,6 +252,7 @@ RsDoInterruptDescriptor (
+      AML_RESOURCE            *Rover = NULL;
+      ACPI_PARSE_OBJECT       *InitializerOp;
+      ASL_RESOURCE_NODE       *Rnode;
+ +    UINT16                  ResourceLength = 0;
+      UINT16                  StringLength = 0;
+      UINT32                  OptionIndex = 0;
+      UINT32                  i;
 -@@ -295,7 +300,7 @@
++@@ -294,7 +299,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,
 -@@ -403,10 +408,11 @@
++@@ -402,10 +407,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 */
+  
 -@@ -442,7 +448,7 @@
++@@ -441,7 +447,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 */
 -@@ -454,13 +460,14 @@
++@@ -453,13 +459,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);
+  }
+  
 -@@ -511,7 +518,7 @@
++@@ -510,7 +517,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 */
+  
 -Index: b/compiler/aslrestype2d.c
 -===================================================================
 ---- a/compiler/aslrestype2d.c	2010-07-02 21:42:26.585349064 +0900
 -+++ b/compiler/aslrestype2d.c	2010-07-04 11:18:19.494017882 +0900
 -@@ -156,7 +156,13 @@
++diff --git a/source/compiler/aslrestype2d.c b/source/compiler/aslrestype2d.c
++index 1ca0f2d..5bebd30 100644
++--- a/source/compiler/aslrestype2d.c
+++++ b/source/compiler/aslrestype2d.c
++@@ -156,7 +156,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                  i;
+      BOOLEAN                 ResSourceIndex = FALSE;
 -@@ -177,8 +183,7 @@
++@@ -177,8 +183,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 */
 -@@ -222,8 +227,7 @@
++@@ -222,8 +227,7 @@ RsDoDwordIoDescriptor (
+  
+          case 5: /* Address Granularity */
+  
+ -            Descriptor->Address32.Granularity =
+ -                (UINT32) InitializerOp->Asl.Value.Integer;
 -+            Granularity = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+++            Granularity = (UINT32) InitializerOp->Asl.Value.Integer;
++             RsCreateDwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Granularity));
+              GranOp = InitializerOp;
 -@@ -231,8 +235,7 @@
++@@ -231,8 +235,7 @@ RsDoDwordIoDescriptor (
+  
+          case 6: /* Address Min */
+  
+ -            Descriptor->Address32.Minimum =
+ -                (UINT32) InitializerOp->Asl.Value.Integer;
 -+            Minimum = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
+++            Minimum = (UINT32) InitializerOp->Asl.Value.Integer;
++             RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Minimum));
+              MinOp = InitializerOp;
 -@@ -240,8 +243,7 @@
++@@ -240,8 +243,7 @@ RsDoDwordIoDescriptor (
+  
+          case 7: /* Address Max */
+  
+ -            Descriptor->Address32.Maximum =
+ -                (UINT32) InitializerOp->Asl.Value.Integer;
 -+            Maximum = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
+++            Maximum = (UINT32) InitializerOp->Asl.Value.Integer;
++             RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Maximum));
+              MaxOp = InitializerOp;
 -@@ -249,16 +251,14 @@
++@@ -249,16 +251,14 @@ RsDoDwordIoDescriptor (
+  
+          case 8: /* Translation Offset */
+  
+ -            Descriptor->Address32.TranslationOffset =
+ -                (UINT32) InitializerOp->Asl.Value.Integer;
 -+            TranslationOffset = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+++            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 = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
+++            AddressLength = (UINT32) InitializerOp->Asl.Value.Integer;
++             RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.AddressLength));
+              LengthOp = InitializerOp;
 -@@ -272,7 +272,7 @@
++@@ -272,7 +272,7 @@ RsDoDwordIoDescriptor (
+  
+                  OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer;
+                  OptionIndex++;
+ -                Descriptor->Address32.ResourceLength++;
+ +                ResourceLength++;
+                  ResSourceIndex = TRUE;
+              }
+              break;
 -@@ -286,8 +286,7 @@
++@@ -286,8 +286,7 @@ RsDoDwordIoDescriptor (
+                  {
+                      /* Found a valid ResourceSource */
+  
+ -                    Descriptor->Address32.ResourceLength = (UINT16)
+ -                        (Descriptor->Address32.ResourceLength + StringLength);
+ +                    ResourceLength = (UINT16) (ResourceLength + StringLength);
+  
+                      strcpy ((char *)
+                          &OptionalFields[OptionIndex],
 -@@ -347,13 +346,20 @@
++@@ -347,13 +346,20 @@ RsDoDwordIoDescriptor (
+      /* Validate the Min/Max/Len/Gran values */
+  
+      RsLargeAddressCheck (
 --        Descriptor->Address32.Minimum,
 --        Descriptor->Address32.Maximum,
 --        Descriptor->Address32.AddressLength,
 --        Descriptor->Address32.Granularity,
++-        (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);
++         MinOp, MaxOp, LengthOp, GranOp, Op);
+  
+ +    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);
 -@@ -388,7 +394,13 @@
++@@ -388,7 +394,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                  i;
+      BOOLEAN                 ResSourceIndex = FALSE;
+  
 -@@ -408,11 +420,9 @@
++@@ -408,11 +420,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++)
 -@@ -461,8 +471,7 @@
++@@ -461,8 +471,7 @@ RsDoDwordMemoryDescriptor (
+  
+          case 6: /* Address Granularity */
+  
+ -            Descriptor->Address32.Granularity =
+ -                (UINT32) InitializerOp->Asl.Value.Integer;
 -+            Granularity = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+++            Granularity = (UINT32) InitializerOp->Asl.Value.Integer;
++             RsCreateDwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Granularity));
+              GranOp = InitializerOp;
 -@@ -470,8 +479,7 @@
++@@ -470,8 +479,7 @@ RsDoDwordMemoryDescriptor (
+  
+          case 7: /* Min Address */
+  
+ -            Descriptor->Address32.Minimum =
+ -                (UINT32) InitializerOp->Asl.Value.Integer;
 -+            Minimum = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
+++            Minimum = (UINT32) InitializerOp->Asl.Value.Integer;
++             RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Minimum));
+              MinOp = InitializerOp;
 -@@ -479,8 +487,7 @@
++@@ -479,8 +487,7 @@ RsDoDwordMemoryDescriptor (
+  
+          case 8: /* Max Address */
+  
+ -            Descriptor->Address32.Maximum =
+ -                (UINT32) InitializerOp->Asl.Value.Integer;
 -+            Maximum = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
+++            Maximum = (UINT32) InitializerOp->Asl.Value.Integer;
++             RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Maximum));
+              MaxOp = InitializerOp;
 -@@ -488,16 +495,14 @@
++@@ -488,16 +495,14 @@ RsDoDwordMemoryDescriptor (
+  
+          case 9: /* Translation Offset */
+  
+ -            Descriptor->Address32.TranslationOffset =
+ -                (UINT32) InitializerOp->Asl.Value.Integer;
 -+            TranslationOffset = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+++            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 = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
+++            AddressLength = (UINT32) InitializerOp->Asl.Value.Integer;
++             RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.AddressLength));
+              LengthOp = InitializerOp;
 -@@ -509,7 +514,7 @@
++@@ -509,7 +514,7 @@ RsDoDwordMemoryDescriptor (
+              {
+                  OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer;
+                  OptionIndex++;
+ -                Descriptor->Address32.ResourceLength++;
+ +                ResourceLength++;
+                  ResSourceIndex = TRUE;
+              }
+              break;
 -@@ -521,8 +526,8 @@
++@@ -521,8 +526,8 @@ RsDoDwordMemoryDescriptor (
+              {
+                  if (StringLength)
+                  {
+ -                    Descriptor->Address32.ResourceLength = (UINT16)
+ -                        (Descriptor->Address32.ResourceLength + StringLength);
+ +
+ +                    ResourceLength = (UINT16) (ResourceLength + StringLength);
+  
+                      strcpy ((char *)
+                          &OptionalFields[OptionIndex],
 -@@ -583,13 +588,20 @@
++@@ -583,13 +588,20 @@ RsDoDwordMemoryDescriptor (
+      /* Validate the Min/Max/Len/Gran values */
+  
+      RsLargeAddressCheck (
 --        Descriptor->Address32.Minimum,
 --        Descriptor->Address32.Maximum,
 --        Descriptor->Address32.AddressLength,
 --        Descriptor->Address32.Granularity,
++-        (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);
++         MinOp, MaxOp, LengthOp, GranOp, Op);
+  
+ +    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);
 -@@ -624,7 +636,13 @@
++@@ -624,7 +636,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                  i;
+      BOOLEAN                 ResSourceIndex = FALSE;
+  
 -@@ -643,8 +661,7 @@
++@@ -643,8 +661,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 */
 -@@ -693,8 +710,7 @@
++@@ -693,8 +710,7 @@ RsDoDwordSpaceDescriptor (
+  
+          case 6: /* Address Granularity */
+  
+ -            Descriptor->Address32.Granularity =
+ -                (UINT32) InitializerOp->Asl.Value.Integer;
 -+            Granularity = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+++            Granularity = (UINT32) InitializerOp->Asl.Value.Integer;
++             RsCreateDwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Granularity));
+              GranOp = InitializerOp;
 -@@ -702,8 +718,7 @@
++@@ -702,8 +718,7 @@ RsDoDwordSpaceDescriptor (
+  
+          case 7: /* Min Address */
+  
+ -            Descriptor->Address32.Minimum =
+ -                (UINT32) InitializerOp->Asl.Value.Integer;
 -+            Minimum = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
+++            Minimum = (UINT32) InitializerOp->Asl.Value.Integer;
++             RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Minimum));
+              MinOp = InitializerOp;
 -@@ -711,8 +726,7 @@
++@@ -711,8 +726,7 @@ RsDoDwordSpaceDescriptor (
+  
+          case 8: /* Max Address */
+  
+ -            Descriptor->Address32.Maximum =
+ -                (UINT32) InitializerOp->Asl.Value.Integer;
 -+            Maximum = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
+++            Maximum = (UINT32) InitializerOp->Asl.Value.Integer;
++             RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Maximum));
+              MaxOp = InitializerOp;
 -@@ -720,16 +734,14 @@
++@@ -720,16 +734,14 @@ RsDoDwordSpaceDescriptor (
+  
+          case 9: /* Translation Offset */
+  
+ -            Descriptor->Address32.TranslationOffset =
+ -                (UINT32) InitializerOp->Asl.Value.Integer;
 -+            TranslationOffset = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+++            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 = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
+++            AddressLength = (UINT32) InitializerOp->Asl.Value.Integer;
++             RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.AddressLength));
+              LengthOp = InitializerOp;
 -@@ -741,7 +753,7 @@
++@@ -741,7 +753,7 @@ RsDoDwordSpaceDescriptor (
+              {
+                  OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer;
+                  OptionIndex++;
+ -                Descriptor->Address32.ResourceLength++;
+ +                ResourceLength++;
+                  ResSourceIndex = TRUE;
+              }
+              break;
 -@@ -753,8 +765,7 @@
++@@ -753,8 +765,7 @@ RsDoDwordSpaceDescriptor (
+              {
+                  if (StringLength)
+                  {
+ -                    Descriptor->Address32.ResourceLength = (UINT16)
+ -                        (Descriptor->Address32.ResourceLength + StringLength);
+ +                    ResourceLength = (UINT16) (ResourceLength + StringLength);
+  
+                      strcpy ((char *)
+                          &OptionalFields[OptionIndex],
 -@@ -801,13 +812,20 @@
++@@ -801,13 +812,20 @@ RsDoDwordSpaceDescriptor (
+      /* Validate the Min/Max/Len/Gran values */
+  
+      RsLargeAddressCheck (
 --        Descriptor->Address32.Minimum,
 --        Descriptor->Address32.Maximum,
 --        Descriptor->Address32.AddressLength,
 --        Descriptor->Address32.Granularity,
++-        (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);
++         MinOp, MaxOp, LengthOp, GranOp, Op);
+  
+ +    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);
 -Index: b/compiler/aslrestype2e.c
 -===================================================================
 ---- a/compiler/aslrestype2e.c	2010-07-02 21:42:26.637349971 +0900
 -+++ b/compiler/aslrestype2e.c	2010-07-04 11:18:19.498018099 +0900
 -@@ -156,6 +156,13 @@
++diff --git a/source/compiler/aslrestype2e.c b/source/compiler/aslrestype2e.c
++index e5fff47..d701880 100644
++--- a/source/compiler/aslrestype2e.c
+++++ b/source/compiler/aslrestype2e.c
++@@ -155,6 +155,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                  i;
+  
+  
 -@@ -170,9 +177,10 @@
++@@ -169,9 +176,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 */
+  
 -@@ -215,7 +223,7 @@
++@@ -214,7 +222,7 @@ RsDoExtendedIoDescriptor (
+  
+          case 5: /* Address Granularity */
+  
+ -            Descriptor->ExtAddress64.Granularity = InitializerOp->Asl.Value.Integer;
+ +            Granularity = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
++             RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Granularity));
+              GranOp = InitializerOp;
 -@@ -223,7 +231,7 @@
++@@ -222,7 +230,7 @@ RsDoExtendedIoDescriptor (
+  
+          case 6: /* Address Min */
+  
+ -            Descriptor->ExtAddress64.Minimum = InitializerOp->Asl.Value.Integer;
+ +            Minimum = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
++             RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Minimum));
+              MinOp = InitializerOp;
 -@@ -231,7 +239,7 @@
++@@ -230,7 +238,7 @@ RsDoExtendedIoDescriptor (
+  
+          case 7: /* Address Max */
+  
+ -            Descriptor->ExtAddress64.Maximum = InitializerOp->Asl.Value.Integer;
+ +            Maximum = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
++             RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Maximum));
+              MaxOp = InitializerOp;
 -@@ -239,14 +247,14 @@
++@@ -238,14 +246,14 @@ RsDoExtendedIoDescriptor (
+  
+          case 8: /* Translation Offset */
+  
+ -            Descriptor->ExtAddress64.TranslationOffset = InitializerOp->Asl.Value.Integer;
+ +            TranslationOffset = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
++             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;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
++             RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.AddressLength));
+              LengthOp = InitializerOp;
 -@@ -254,7 +262,7 @@
++@@ -253,7 +261,7 @@ RsDoExtendedIoDescriptor (
+  
+          case 10: /* Type-Specific Attributes */
+  
+ -            Descriptor->ExtAddress64.TypeSpecific = InitializerOp->Asl.Value.Integer;
+ +            TypeSpecific = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES,
++             RsCreateQwordField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TypeSpecific));
+              break;
 -@@ -290,13 +298,20 @@
++@@ -289,13 +297,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);
++         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);
+  }
 -@@ -329,6 +344,13 @@
++@@ -328,6 +343,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                  i;
+  
+  
 -@@ -343,9 +365,10 @@
++@@ -342,9 +364,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 */
+  
 -@@ -395,7 +418,7 @@
++@@ -394,7 +417,7 @@ RsDoExtendedMemoryDescriptor (
+  
+          case 6: /* Address Granularity */
+  
+ -            Descriptor->ExtAddress64.Granularity = InitializerOp->Asl.Value.Integer;
+ +            Granularity = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
++             RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Granularity));
+              GranOp = InitializerOp;
 -@@ -403,7 +426,7 @@
++@@ -402,7 +425,7 @@ RsDoExtendedMemoryDescriptor (
+  
+          case 7: /* Min Address */
+  
+ -            Descriptor->ExtAddress64.Minimum = InitializerOp->Asl.Value.Integer;
+ +            Minimum = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
++             RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Minimum));
+              MinOp = InitializerOp;
 -@@ -411,7 +434,7 @@
++@@ -410,7 +433,7 @@ RsDoExtendedMemoryDescriptor (
+  
+          case 8: /* Max Address */
+  
+ -            Descriptor->ExtAddress64.Maximum = InitializerOp->Asl.Value.Integer;
+ +            Maximum = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
++             RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Maximum));
+              MaxOp = InitializerOp;
 -@@ -419,14 +442,14 @@
++@@ -418,14 +441,14 @@ RsDoExtendedMemoryDescriptor (
+  
+          case 9: /* Translation Offset */
+  
+ -            Descriptor->ExtAddress64.TranslationOffset = InitializerOp->Asl.Value.Integer;
+ +            TranslationOffset = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
++             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;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
++             RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.AddressLength));
+              LengthOp = InitializerOp;
 -@@ -434,7 +457,7 @@
++@@ -433,7 +456,7 @@ RsDoExtendedMemoryDescriptor (
+  
+          case 11: /* Type-Specific Attributes */
+  
+ -            Descriptor->ExtAddress64.TypeSpecific = InitializerOp->Asl.Value.Integer;
+ +            TypeSpecific = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES,
++             RsCreateQwordField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TypeSpecific));
+              break;
 -@@ -471,13 +494,20 @@
++@@ -470,13 +493,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);
++         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);
+  }
 -@@ -510,6 +540,13 @@
++@@ -509,6 +539,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;
+  
+  
 -@@ -523,9 +560,10 @@
++@@ -522,9 +559,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 */
+  
 -@@ -573,7 +611,7 @@
++@@ -572,7 +610,7 @@ RsDoExtendedSpaceDescriptor (
+  
+          case 6: /* Address Granularity */
+  
+ -            Descriptor->ExtAddress64.Granularity = InitializerOp->Asl.Value.Integer;
+ +            Granularity = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
++             RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Granularity));
+              GranOp = InitializerOp;
 -@@ -581,7 +619,7 @@
++@@ -580,7 +618,7 @@ RsDoExtendedSpaceDescriptor (
+  
+          case 7: /* Min Address */
+  
+ -            Descriptor->ExtAddress64.Minimum = InitializerOp->Asl.Value.Integer;
+ +            Minimum = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
++             RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Minimum));
+              MinOp = InitializerOp;
 -@@ -589,7 +627,7 @@
++@@ -588,7 +626,7 @@ RsDoExtendedSpaceDescriptor (
+  
+          case 8: /* Max Address */
+  
+ -            Descriptor->ExtAddress64.Maximum = InitializerOp->Asl.Value.Integer;
+ +            Maximum = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
++             RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Maximum));
+              MaxOp = InitializerOp;
 -@@ -597,14 +635,14 @@
++@@ -596,14 +634,14 @@ RsDoExtendedSpaceDescriptor (
+  
+          case 9: /* Translation Offset */
+  
+ -            Descriptor->ExtAddress64.TranslationOffset = InitializerOp->Asl.Value.Integer;
+ +            TranslationOffset = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
++             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;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
++             RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.AddressLength));
+              LengthOp = InitializerOp;
 -@@ -612,7 +650,7 @@
++@@ -611,7 +649,7 @@ RsDoExtendedSpaceDescriptor (
+  
+          case 11: /* Type-Specific Attributes */
+  
+ -            Descriptor->ExtAddress64.TypeSpecific = InitializerOp->Asl.Value.Integer;
+ +            TypeSpecific = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES,
++             RsCreateQwordField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TypeSpecific));
+              break;
 -@@ -634,13 +672,20 @@
++@@ -633,13 +671,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);
++         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);
+  }
 -Index: b/compiler/aslrestype2q.c
 -===================================================================
 ---- a/compiler/aslrestype2q.c	2010-07-02 21:42:26.673349159 +0900
 -+++ b/compiler/aslrestype2q.c	2010-07-04 11:18:19.498018099 +0900
 -@@ -157,7 +157,13 @@
++diff --git a/source/compiler/aslrestype2q.c b/source/compiler/aslrestype2q.c
++index 65c242a..c92d545 100644
++--- a/source/compiler/aslrestype2q.c
+++++ b/source/compiler/aslrestype2q.c
++@@ -157,7 +157,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                  i;
+      BOOLEAN                 ResSourceIndex = FALSE;
+  
 -@@ -177,8 +183,7 @@
++@@ -177,8 +183,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 */
 -@@ -222,7 +227,7 @@
++@@ -222,7 +227,7 @@ RsDoQwordIoDescriptor (
+  
+          case 5: /* Address Granularity */
+  
+ -            Descriptor->Address64.Granularity = InitializerOp->Asl.Value.Integer;
+ +            Granularity = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
++             RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Granularity));
+              GranOp = InitializerOp;
 -@@ -230,7 +235,7 @@
++@@ -230,7 +235,7 @@ RsDoQwordIoDescriptor (
+  
+          case 6: /* Address Min */
+  
+ -            Descriptor->Address64.Minimum = InitializerOp->Asl.Value.Integer;
+ +            Minimum = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
++             RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Minimum));
+              MinOp = InitializerOp;
 -@@ -238,7 +243,7 @@
++@@ -238,7 +243,7 @@ RsDoQwordIoDescriptor (
+  
+          case 7: /* Address Max */
+  
+ -            Descriptor->Address64.Maximum = InitializerOp->Asl.Value.Integer;
+ +            Maximum = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
++             RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Maximum));
+              MaxOp = InitializerOp;
 -@@ -246,14 +251,14 @@
++@@ -246,14 +251,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;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
++             RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.AddressLength));
+              LengthOp = InitializerOp;
 -@@ -265,7 +270,7 @@
++@@ -265,7 +270,7 @@ RsDoQwordIoDescriptor (
+              {
+                  OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer;
+                  OptionIndex++;
+ -                Descriptor->Address64.ResourceLength++;
+ +                ResourceLength++;
+                  ResSourceIndex = TRUE;
+              }
+              break;
 -@@ -277,8 +282,7 @@
++@@ -277,8 +282,7 @@ RsDoQwordIoDescriptor (
+              {
+                  if (StringLength)
+                  {
+ -                    Descriptor->Address64.ResourceLength = (UINT16)
+ -                        (Descriptor->Address64.ResourceLength + StringLength);
+ +                    ResourceLength = (UINT16) (ResourceLength + StringLength);
+  
+                      strcpy ((char *)
+                          &OptionalFields[OptionIndex],
 -@@ -338,13 +342,20 @@
++@@ -338,13 +342,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);
++         MinOp, MaxOp, LengthOp, GranOp, Op);
+  
+ +    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);
 -@@ -379,7 +390,13 @@
++@@ -379,7 +390,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                  i;
+      BOOLEAN                 ResSourceIndex = FALSE;
+  
 -@@ -399,8 +416,7 @@
++@@ -399,8 +416,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 */
 -@@ -451,7 +467,7 @@
++@@ -451,7 +467,7 @@ RsDoQwordMemoryDescriptor (
+  
+          case 6: /* Address Granularity */
+  
+ -            Descriptor->Address64.Granularity = InitializerOp->Asl.Value.Integer;
+ +            Granularity = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
++             RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Granularity));
+              GranOp = InitializerOp;
 -@@ -459,7 +475,7 @@
++@@ -459,7 +475,7 @@ RsDoQwordMemoryDescriptor (
+  
+          case 7: /* Min Address */
+  
+ -            Descriptor->Address64.Minimum = InitializerOp->Asl.Value.Integer;
+ +            Minimum = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
++             RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Minimum));
+              MinOp = InitializerOp;
 -@@ -467,7 +483,7 @@
++@@ -467,7 +483,7 @@ RsDoQwordMemoryDescriptor (
+  
+          case 8: /* Max Address */
+  
+ -            Descriptor->Address64.Maximum = InitializerOp->Asl.Value.Integer;
+ +            Maximum = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
++             RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Maximum));
+              MaxOp = InitializerOp;
 -@@ -475,14 +491,14 @@
++@@ -475,14 +491,14 @@ RsDoQwordMemoryDescriptor (
+  
+          case 9: /* Translation Offset */
+  
+ -            Descriptor->Address64.TranslationOffset = InitializerOp->Asl.Value.Integer;
+ +            TranslationOffset = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
++             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;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
++             RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.AddressLength));
+              LengthOp = InitializerOp;
 -@@ -494,7 +510,7 @@
++@@ -494,7 +510,7 @@ RsDoQwordMemoryDescriptor (
+              {
+                  OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer;
+                  OptionIndex++;
+ -                Descriptor->Address64.ResourceLength++;
+ +                ResourceLength++;
+                  ResSourceIndex = TRUE;
+              }
+              break;
 -@@ -506,8 +522,7 @@
++@@ -506,8 +522,7 @@ RsDoQwordMemoryDescriptor (
+              {
+                  if (StringLength)
+                  {
+ -                    Descriptor->Address64.ResourceLength = (UINT16)
+ -                        (Descriptor->Address64.ResourceLength + StringLength);
+ +                    ResourceLength = (UINT16) (ResourceLength + StringLength);
+  
+                      strcpy ((char *)
+                          &OptionalFields[OptionIndex],
 -@@ -568,13 +583,20 @@
++@@ -568,13 +583,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);
++         MinOp, MaxOp, LengthOp, GranOp, Op);
+  
+ +    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);
 -@@ -609,8 +631,14 @@
++@@ -609,8 +631,14 @@ RsDoQwordSpaceDescriptor (
+      ASL_RESOURCE_NODE       *Rnode;
+      UINT8                   *OptionalFields;
+      UINT16                  StringLength = 0;
+ +    UINT16                  ResourceLength = 0;
+      UINT32                  OptionIndex = 0;
+      UINT32                  i;
+ +    UINT64                  Minimum = 0;
+ +    UINT64                  Maximum = 0;
+ +    UINT64                  AddressLength = 0;
+ +    UINT64                  Granularity = 0;
+ +    UINT64                  TranslationOffset = 0;
+      BOOLEAN                 ResSourceIndex = FALSE;
+  
+  
 -@@ -628,8 +656,7 @@
++@@ -628,8 +656,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 */
 -@@ -678,7 +705,7 @@
++@@ -678,7 +705,7 @@ RsDoQwordSpaceDescriptor (
+  
+          case 6: /* Address Granularity */
+  
+ -            Descriptor->Address64.Granularity = InitializerOp->Asl.Value.Integer;
+ +            Granularity = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
++             RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Granularity));
+              GranOp = InitializerOp;
 -@@ -686,7 +713,7 @@
++@@ -686,7 +713,7 @@ RsDoQwordSpaceDescriptor (
+  
+          case 7: /* Min Address */
+  
+ -            Descriptor->Address64.Minimum = InitializerOp->Asl.Value.Integer;
+ +            Minimum = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
++             RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Minimum));
+              MinOp = InitializerOp;
 -@@ -694,7 +721,7 @@
++@@ -694,7 +721,7 @@ RsDoQwordSpaceDescriptor (
+  
+          case 8: /* Max Address */
+  
+ -            Descriptor->Address64.Maximum = InitializerOp->Asl.Value.Integer;
+ +            Maximum = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
++             RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Maximum));
+              MaxOp = InitializerOp;
 -@@ -702,14 +729,14 @@
++@@ -702,14 +729,14 @@ RsDoQwordSpaceDescriptor (
+  
+          case 9: /* Translation Offset */
+  
+ -            Descriptor->Address64.TranslationOffset = InitializerOp->Asl.Value.Integer;
+ +            TranslationOffset = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
++             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;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
++             RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.AddressLength));
+              LengthOp = InitializerOp;
 -@@ -721,7 +748,7 @@
++@@ -721,7 +748,7 @@ RsDoQwordSpaceDescriptor (
+              {
+                  OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer;
+                  OptionIndex++;
+ -                Descriptor->Address64.ResourceLength++;
+ +                ResourceLength++;
+                  ResSourceIndex = TRUE;
+              }
+              break;
 -@@ -733,8 +760,7 @@
++@@ -733,8 +760,7 @@ RsDoQwordSpaceDescriptor (
+              {
+                  if (StringLength)
+                  {
+ -                    Descriptor->Address64.ResourceLength = (UINT16)
+ -                        (Descriptor->Address64.ResourceLength + StringLength);
+ +                    ResourceLength = (UINT16) (ResourceLength + StringLength);
+  
+                      strcpy ((char *)
+                          &OptionalFields[OptionIndex],
 -@@ -780,13 +806,20 @@
++@@ -780,13 +806,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);
++         MinOp, MaxOp, LengthOp, GranOp, Op);
+  
+ +    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);
 -Index: b/compiler/aslrestype2w.c
 -===================================================================
 ---- a/compiler/aslrestype2w.c	2010-07-02 21:42:26.689348992 +0900
 -+++ b/compiler/aslrestype2w.c	2010-07-04 11:18:19.502017898 +0900
 -@@ -158,6 +158,12 @@
++diff --git a/source/compiler/aslrestype2s.c b/source/compiler/aslrestype2s.c
++index a9d24cd..4d9c7db 100644
++--- a/source/compiler/aslrestype2s.c
+++++ b/source/compiler/aslrestype2s.c
++@@ -365,6 +365,9 @@ RsDoGpioIntDescriptor (
++     UINT16                  VendorLength;
++     UINT16                  InterruptLength;
++     UINT16                  DescriptorSize;
+++    UINT16                  IntFlags = 0;
+++    UINT16                  DebounceTimeout = 0;
+++    UINT16                  Flags = 0;
++     UINT32                  i;
++ 
++ 
++@@ -420,21 +423,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;
++@@ -448,7 +451,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;
++@@ -474,7 +477,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) */
++@@ -538,6 +541,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);
+++
++     return (Rnode);
++ }
++ 
++@@ -571,6 +578,10 @@ RsDoGpioIoDescriptor (
++     UINT16                  VendorLength;
++     UINT16                  InterruptLength;
++     UINT16                  DescriptorSize;
+++    UINT16                  IntFlags = 0;
+++    UINT16                  DebounceTimeout = 0;
+++    UINT16                  DriveStrength = 0;
+++    UINT16                  Flags = 0;
++     UINT32                  i;
++ 
++ 
++@@ -626,7 +637,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;
++@@ -640,21 +651,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;
++@@ -680,7 +691,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) */
++@@ -744,6 +755,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);
+++
++     return (Rnode);
++ }
++ 
++@@ -775,6 +791,9 @@ RsDoI2cSerialBusDescriptor (
++     UINT16                  ResSourceLength;
++     UINT16                  VendorLength;
++     UINT16                  DescriptorSize;
+++    UINT16                  SlaveAddress = 0;
+++    UINT32                  ConnectionSpeed = 0;
+++    UINT16                  TypeSpecificFlags = 0;
++     UINT32                  i;
++ 
++ 
++@@ -822,7 +841,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;
++@@ -836,14 +855,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;
++@@ -890,6 +909,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);
++     return (Rnode);
++ }
++ 
++@@ -921,6 +943,9 @@ RsDoSpiSerialBusDescriptor (
++     UINT16                  ResSourceLength;
++     UINT16                  VendorLength;
++     UINT16                  DescriptorSize;
+++    UINT16                  DeviceSelection = 0;
+++    UINT32                  ConnectionSpeed = 0;
+++    UINT16                  TypeSpecificFlags = 0;
++     UINT32                  i;
++ 
++ 
++@@ -968,21 +993,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;
++@@ -1003,7 +1028,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;
++@@ -1064,6 +1089,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);
+++
++     return (Rnode);
++ }
++ 
++@@ -1095,6 +1124,10 @@ RsDoUartSerialBusDescriptor (
++     UINT16                  ResSourceLength;
++     UINT16                  VendorLength;
++     UINT16                  DescriptorSize;
+++    UINT32                  DefaultBaudRate = 0;
+++    UINT16                  TypeSpecificFlags = 0;
+++    UINT16                  RxFifoSize = 0;
+++    UINT16                  TxFifoSize = 0;
++     UINT32                  i;
++ 
++ 
++@@ -1142,21 +1175,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;
++@@ -1170,7 +1203,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;
++@@ -1184,21 +1217,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;
++@@ -1255,5 +1288,10 @@ 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);
+++
++     return (Rnode);
++ }
++diff --git a/source/compiler/aslrestype2w.c b/source/compiler/aslrestype2w.c
++index 79d7bcc..77acbcc 100644
++--- a/source/compiler/aslrestype2w.c
+++++ b/source/compiler/aslrestype2w.c
++@@ -158,6 +158,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                  i;
+      BOOLEAN                 ResSourceIndex = FALSE;
+  
 -@@ -177,8 +183,7 @@
++@@ -177,8 +183,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 */
 -@@ -222,7 +227,7 @@
++@@ -222,7 +227,7 @@ RsDoWordIoDescriptor (
+  
+          case 5: /* Address Granularity */
+  
+ -            Descriptor->Address16.Granularity = (UINT16) InitializerOp->Asl.Value.Integer;
 -+            Granularity = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+++            Granularity = (UINT16) InitializerOp->Asl.Value.Integer;
++             RsCreateWordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Granularity));
+              GranOp = InitializerOp;
 -@@ -230,7 +235,7 @@
++@@ -230,7 +235,7 @@ RsDoWordIoDescriptor (
+  
+          case 6: /* Address Min */
+  
+ -            Descriptor->Address16.Minimum = (UINT16) InitializerOp->Asl.Value.Integer;
 -+            Minimum = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
+++            Minimum = (UINT16) InitializerOp->Asl.Value.Integer;
++             RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Minimum));
+              MinOp = InitializerOp;
 -@@ -238,7 +243,7 @@
++@@ -238,7 +243,7 @@ RsDoWordIoDescriptor (
+  
+          case 7: /* Address Max */
+  
+ -            Descriptor->Address16.Maximum = (UINT16) InitializerOp->Asl.Value.Integer;
 -+            Maximum = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
+++            Maximum = (UINT16) InitializerOp->Asl.Value.Integer;
++             RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Maximum));
+              MaxOp = InitializerOp;
 -@@ -246,14 +251,14 @@
++@@ -246,14 +251,14 @@ RsDoWordIoDescriptor (
+  
+          case 8: /* Translation Offset */
+  
+ -            Descriptor->Address16.TranslationOffset = (UINT16) InitializerOp->Asl.Value.Integer;
 -+            TranslationOffset = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+++            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 = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
+++            AddressLength = (UINT16) InitializerOp->Asl.Value.Integer;
++             RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH,
+                   CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.AddressLength));
+              LengthOp = InitializerOp;
 -@@ -265,7 +270,7 @@
++@@ -265,7 +270,7 @@ RsDoWordIoDescriptor (
+              {
+                  OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer;
+                  OptionIndex++;
+ -                Descriptor->Address16.ResourceLength++;
+ +                ResourceLength++;
+                  ResSourceIndex = TRUE;
+              }
+              break;
 -@@ -277,8 +282,7 @@
++@@ -277,8 +282,7 @@ RsDoWordIoDescriptor (
+              {
+                  if (StringLength)
+                  {
+ -                    Descriptor->Address16.ResourceLength = (UINT16)
+ -                        (Descriptor->Address16.ResourceLength + StringLength);
+ +                    ResourceLength = (UINT16) (ResourceLength + StringLength);
+  
+                      strcpy ((char *)
+                          &OptionalFields[OptionIndex],
 -@@ -338,13 +342,20 @@
++@@ -338,13 +342,20 @@ RsDoWordIoDescriptor (
+      /* Validate the Min/Max/Len/Gran values */
+  
+      RsLargeAddressCheck (
 --        Descriptor->Address16.Minimum,
 --        Descriptor->Address16.Maximum,
 --        Descriptor->Address16.AddressLength,
 --        Descriptor->Address16.Granularity,
++-        (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);
++         MinOp, MaxOp, LengthOp, GranOp, Op);
+  
+ +    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);
 -@@ -380,6 +391,12 @@
++@@ -380,6 +391,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                  i;
+      BOOLEAN                 ResSourceIndex = FALSE;
+  
 -@@ -399,8 +416,7 @@
++@@ -399,8 +416,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 */
 -@@ -437,8 +453,7 @@
++@@ -437,8 +453,7 @@ RsDoWordBusNumberDescriptor (
+  
+          case 4: /* Address Granularity */
+  
+ -            Descriptor->Address16.Granularity =
+ -                (UINT16) InitializerOp->Asl.Value.Integer;
 -+            Granularity = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+++            Granularity = (UINT16) InitializerOp->Asl.Value.Integer;
++             RsCreateWordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Granularity));
+              GranOp = InitializerOp;
 -@@ -446,8 +461,7 @@
++@@ -446,8 +461,7 @@ RsDoWordBusNumberDescriptor (
+  
+          case 5: /* Min Address */
+  
+ -            Descriptor->Address16.Minimum =
+ -                (UINT16) InitializerOp->Asl.Value.Integer;
 -+            Minimum = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
+++            Minimum = (UINT16) InitializerOp->Asl.Value.Integer;
++             RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Minimum));
+              MinOp = InitializerOp;
 -@@ -455,8 +469,7 @@
++@@ -455,8 +469,7 @@ RsDoWordBusNumberDescriptor (
+  
+          case 6: /* Max Address */
+  
+ -            Descriptor->Address16.Maximum =
+ -                (UINT16) InitializerOp->Asl.Value.Integer;
 -+            Maximum = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
+++            Maximum = (UINT16) InitializerOp->Asl.Value.Integer;
++             RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Maximum));
+              MaxOp = InitializerOp;
 -@@ -464,16 +477,14 @@
++@@ -464,16 +477,14 @@ RsDoWordBusNumberDescriptor (
+  
+          case 7: /* Translation Offset */
+  
+ -            Descriptor->Address16.TranslationOffset =
+ -                (UINT16) InitializerOp->Asl.Value.Integer;
 -+            TranslationOffset = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+++            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 = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
+++            AddressLength = (UINT16) InitializerOp->Asl.Value.Integer;
++             RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH,
+                   CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.AddressLength));
+              LengthOp = InitializerOp;
 -@@ -485,7 +496,7 @@
++@@ -485,7 +496,7 @@ RsDoWordBusNumberDescriptor (
+              {
+                  OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer;
+                  OptionIndex++;
+ -                Descriptor->Address16.ResourceLength++;
+ +                ResourceLength++;
+                  ResSourceIndex = TRUE;
+              }
+              break;
 -@@ -497,8 +508,7 @@
++@@ -497,8 +508,7 @@ RsDoWordBusNumberDescriptor (
+              {
+                  if (StringLength)
+                  {
+ -                    Descriptor->Address16.ResourceLength = (UINT16)
+ -                        (Descriptor->Address16.ResourceLength + StringLength);
+ +                    ResourceLength = (UINT16) (ResourceLength + StringLength);
+  
+                      strcpy ((char *)
+                          &OptionalFields[OptionIndex],
 -@@ -544,13 +554,20 @@
++@@ -544,13 +554,20 @@ RsDoWordBusNumberDescriptor (
+      /* Validate the Min/Max/Len/Gran values */
+  
+      RsLargeAddressCheck (
 --        Descriptor->Address16.Minimum,
 --        Descriptor->Address16.Maximum,
 --        Descriptor->Address16.AddressLength,
 --        Descriptor->Address16.Granularity,
++-        (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);
++         MinOp, MaxOp, LengthOp, GranOp, Op);
+  
+ +    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);
 -@@ -586,6 +603,12 @@
++@@ -586,6 +603,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                  i;
+      BOOLEAN                 ResSourceIndex = FALSE;
+  
 -@@ -604,8 +627,7 @@
++@@ -604,8 +627,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 */
 -@@ -654,8 +676,7 @@
++@@ -654,8 +676,7 @@ RsDoWordSpaceDescriptor (
+  
+          case 6: /* Address Granularity */
+  
+ -            Descriptor->Address16.Granularity =
+ -                (UINT16) InitializerOp->Asl.Value.Integer;
 -+            Granularity = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+++            Granularity = (UINT16) InitializerOp->Asl.Value.Integer;
++             RsCreateWordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Granularity));
+              GranOp = InitializerOp;
 -@@ -663,8 +684,7 @@
++@@ -663,8 +684,7 @@ RsDoWordSpaceDescriptor (
+  
+          case 7: /* Min Address */
+  
+ -            Descriptor->Address16.Minimum =
+ -                (UINT16) InitializerOp->Asl.Value.Integer;
 -+            Minimum = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
+++            Minimum = (UINT16) InitializerOp->Asl.Value.Integer;
++             RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Minimum));
+              MinOp = InitializerOp;
 -@@ -672,8 +692,7 @@
++@@ -672,8 +692,7 @@ RsDoWordSpaceDescriptor (
+  
+          case 8: /* Max Address */
+  
+ -            Descriptor->Address16.Maximum =
+ -                (UINT16) InitializerOp->Asl.Value.Integer;
 -+            Maximum = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
+++            Maximum = (UINT16) InitializerOp->Asl.Value.Integer;
++             RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Maximum));
+              MaxOp = InitializerOp;
 -@@ -681,16 +700,14 @@
++@@ -681,16 +700,14 @@ RsDoWordSpaceDescriptor (
+  
+          case 9: /* Translation Offset */
+  
+ -            Descriptor->Address16.TranslationOffset =
+ -                (UINT16) InitializerOp->Asl.Value.Integer;
 -+            TranslationOffset = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+++            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 = InitializerOp->Asl.Value.Integer;
 -             RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
+++            AddressLength = (UINT16) InitializerOp->Asl.Value.Integer;
++             RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.AddressLength));
+              LengthOp = InitializerOp;
 -@@ -702,7 +719,7 @@
++@@ -702,7 +719,7 @@ RsDoWordSpaceDescriptor (
+              {
+                  OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer;
+                  OptionIndex++;
+ -                Descriptor->Address16.ResourceLength++;
+ +                ResourceLength++;
+                  ResSourceIndex = TRUE;
+              }
+              break;
 -@@ -714,8 +731,7 @@
++@@ -714,8 +731,7 @@ RsDoWordSpaceDescriptor (
+              {
+                  if (StringLength)
+                  {
+ -                    Descriptor->Address16.ResourceLength = (UINT16)
+ -                        (Descriptor->Address16.ResourceLength + StringLength);
+ +                    ResourceLength = (UINT16) (ResourceLength + StringLength);
+  
+                      strcpy ((char *)
+                          &OptionalFields[OptionIndex],
 -@@ -761,13 +777,20 @@
++@@ -761,13 +777,20 @@ RsDoWordSpaceDescriptor (
+      /* Validate the Min/Max/Len/Gran values */
+  
+      RsLargeAddressCheck (
 --        Descriptor->Address16.Minimum,
 --        Descriptor->Address16.Maximum,
 --        Descriptor->Address16.AddressLength,
 --        Descriptor->Address16.Granularity,
++-        (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);
++         MinOp, MaxOp, LengthOp, GranOp, Op);
+  
+ +    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);
 -Index: b/include/acmacros.h
 -===================================================================
 ---- a/include/acmacros.h	2010-07-02 21:42:26.573348963 +0900
 -+++ b/include/acmacros.h	2010-07-04 11:18:19.502017898 +0900
++diff --git a/source/include/acmacros.h b/source/include/acmacros.h
++index ee9e745..67fb983 100644
++--- a/source/include/acmacros.h
+++++ b/source/include/acmacros.h
+ @@ -175,7 +175,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];\
+ @@ -190,9 +191,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];\
+ @@ -219,7 +224,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 --git a/source/include/platform/aclinux.h b/source/include/platform/aclinux.h
++index 3bc85bc..1bace7f 100644
++--- a/source/include/platform/aclinux.h
+++++ b/source/include/platform/aclinux.h
++@@ -155,12 +155,13 @@
++ #include <stdlib.h>
++ #include <ctype.h>
++ #include <unistd.h>
+++#include <endian.h>
++ 
++ /* Host-dependent types and defines for user-space ACPICA */
++ 
++ #define ACPI_FLUSH_CPU_CACHE()
++ 
++-#if defined(__ia64__) || defined(__x86_64__)
+++#if __SIZEOF_LONG__ == 8
++ #define ACPI_MACHINE_WIDTH          64
++ #define COMPILER_DEPENDENT_INT64    long
++ #define COMPILER_DEPENDENT_UINT64   unsigned long
++@@ -173,6 +174,10 @@
++ #define ACPI_CAST_PTHREAD_T(pthread) ((ACPI_THREAD_ID) (UINT32) (void *) (pthread))
++ #endif
++ 
+++#if __BYTE_ORDER == __BIG_ENDIAN
+++#define ACPI_BIG_ENDIAN
+++#endif
+++
++ #ifndef __cdecl
++ #define __cdecl
++ #endif
++-- 
++1.7.12.1
+ 
diff --cc debian-unaligned.patch
index 0000000,e6f0847..7215cb2
mode 000000,100644..100644
--- a/debian-unaligned.patch
+++ b/debian-unaligned.patch
@@@ -1,0 -1,149 +1,152 @@@
+ Add more platforms to the list of the ones requiring aligned memory access. Also
+ fix callsites where wrong assumptions where made in terms of aligment.
+ 
+ Signed-off-by: Mattia Dongili <malattia at linux.it>
++Signed-off-by: Paolo Bonzini <pbonzini at redhat.com>
+ ---
 - compiler/asltree.c  |   15 ++++++++++-----
 - executer/exoparg2.c |   12 +++++++++---
 - include/actypes.h   |   26 +++++++++++++-------------
 - 3 files changed, 32 insertions(+), 21 deletions(-)
++ source/compiler/asltree.c             | 15 ++++++++++-----
++ source/components/executer/exoparg2.c | 12 +++++++++---
++ source/include/actypes.h              | 26 +++++++++++++-------------
++ 3 file modificati, 32 inserzioni(+), 21 rimozioni(-)
+ 
 -Index: b/include/actypes.h
 -===================================================================
 ---- a/include/actypes.h	2010-07-02 21:42:26.465350281 +0900
 -+++ b/include/actypes.h	2010-07-04 11:18:22.506529460 +0900
 -@@ -205,6 +205,19 @@
++diff --git a/source/compiler/asltree.c b/source/compiler/asltree.c
++index ebf87f3..fd859d7 100644
++--- a/source/compiler/asltree.c
+++++ b/source/compiler/asltree.c
++@@ -619,24 +619,27 @@ TrCreateValuedLeafNode (
++         "\nCreateValuedLeafNode  Ln/Col %u/%u NewNode %p  Op %s  Value %8.8X%8.8X  ",
++         Op->Asl.LineNumber, Op->Asl.Column, Op, UtGetOpName(ParseOpcode),
++         ACPI_FORMAT_UINT64 (Value));
++-    Op->Asl.Value.Integer = Value;
+  
 - /*! [End] no source code translation !*/
++     switch (ParseOpcode)
++     {
++     case PARSEOP_STRING_LITERAL:
++-        DbgPrint (ASL_PARSE_OUTPUT, "STRING->%s", Value);
+++        Op->Asl.Value.String = (ACPI_STRING) Value;
+++        DbgPrint (ASL_PARSE_OUTPUT, "STRING->%s", (ACPI_STRING) Value);
++         break;
+  
 -+/*
 -+ * In the case of the Itanium Processor Family (IPF), the hardware does not
 -+ * support misaligned memory transfers. Set the MISALIGNMENT_NOT_SUPPORTED flag
 -+ * to indicate that special precautions must be taken to avoid alignment faults.
 -+ * (IA64 or ia64 is currently used by existing compilers to indicate IPF.)
 -+ *
 -+ * Note: EM64T and other X86-64 processors support misaligned transfers,
 -+ * so there is no need to define this flag.
 -+ */
 -+#if defined (__IA64__) || defined (__ia64__) | defined(__alpha__) || defined(__sparc__) || defined(__hppa__) || defined(__arm__)
 -+#define ACPI_MISALIGNMENT_NOT_SUPPORTED
 -+#endif
 -+
++     case PARSEOP_NAMESEG:
++-        DbgPrint (ASL_PARSE_OUTPUT, "NAMESEG->%s", Value);
+++        Op->Asl.Value.String = (ACPI_STRING) Value;
+++        DbgPrint (ASL_PARSE_OUTPUT, "NAMESEG->%s", (ACPI_STRING) Value);
++         break;
+  
 - /*******************************************************************************
 -  *
 -@@ -231,19 +244,6 @@
 - #define ACPI_SIZE_MAX                   ACPI_UINT64_MAX
 - #define ACPI_USE_NATIVE_DIVIDE          /* Has native 64-bit integer support */
++     case PARSEOP_NAMESTRING:
++-        DbgPrint (ASL_PARSE_OUTPUT, "NAMESTRING->%s", Value);
+++        Op->Asl.Value.String = (ACPI_STRING) Value;
+++        DbgPrint (ASL_PARSE_OUTPUT, "NAMESTRING->%s", (ACPI_STRING) Value);
++         break;
+  
 --/*
 -- * In the case of the Itanium Processor Family (IPF), the hardware does not
 -- * support misaligned memory transfers. Set the MISALIGNMENT_NOT_SUPPORTED flag
 -- * to indicate that special precautions must be taken to avoid alignment faults.
 -- * (IA64 or ia64 is currently used by existing compilers to indicate IPF.)
 -- *
 -- * Note: EM64T and other X86-64 processors support misaligned transfers,
 -- * so there is no need to define this flag.
 -- */
 --#if defined (__IA64__) || defined (__ia64__)
 --#define ACPI_MISALIGNMENT_NOT_SUPPORTED
 --#endif
 --
++     case PARSEOP_EISAID:
++-        DbgPrint (ASL_PARSE_OUTPUT, "EISAID->%s", Value);
+++        Op->Asl.Value.String = (ACPI_STRING) Value;
+++        DbgPrint (ASL_PARSE_OUTPUT, "EISAID->%s", (ACPI_STRING) Value);
++         break;
+  
 - /*******************************************************************************
 -  *
 -Index: b/executer/exoparg2.c
 -===================================================================
 ---- a/executer/exoparg2.c	2010-07-02 21:42:26.477349196 +0900
 -+++ b/executer/exoparg2.c	2010-07-04 11:18:22.506529460 +0900
 -@@ -248,6 +248,8 @@
++     case PARSEOP_METHOD:
++@@ -644,10 +647,12 @@ TrCreateValuedLeafNode (
++         break;
++ 
++     case PARSEOP_INTEGER:
+++        Op->Asl.Value.Integer = Value;
++         DbgPrint (ASL_PARSE_OUTPUT, "INTEGER");
++         break;
++ 
++     default:
+++        Op->Asl.Value.Integer = Value;
++         break;
++     }
++ 
++diff --git a/source/components/executer/exoparg2.c b/source/components/executer/exoparg2.c
++index e55f40c..ed5b1fd 100644
++--- a/source/components/executer/exoparg2.c
+++++ b/source/components/executer/exoparg2.c
++@@ -248,6 +248,8 @@ AcpiExOpcode_2A_2T_1R (
+      ACPI_OPERAND_OBJECT     **Operand = &WalkState->Operands[0];
+      ACPI_OPERAND_OBJECT     *ReturnDesc1 = NULL;
+      ACPI_OPERAND_OBJECT     *ReturnDesc2 = NULL;
+ +    UINT64                  ReturnValue1 = 0;
+ +    UINT64                  ReturnValue2 = 0;
+      ACPI_STATUS             Status;
+  
+  
 -@@ -281,8 +283,10 @@
++@@ -281,8 +283,10 @@ AcpiExOpcode_2A_2T_1R (
+  
+          Status = AcpiUtDivide (Operand[0]->Integer.Value,
+                                 Operand[1]->Integer.Value,
+ -                               &ReturnDesc1->Integer.Value,
+ -                               &ReturnDesc2->Integer.Value);
+ +                               &ReturnValue1, &ReturnValue2);
+ +        ReturnDesc1->Integer.Value = ReturnValue1;
+ +        ReturnDesc2->Integer.Value = ReturnValue2;
+ +
+          if (ACPI_FAILURE (Status))
+          {
+              goto Cleanup;
 -@@ -357,6 +361,7 @@
++@@ -357,6 +361,7 @@ AcpiExOpcode_2A_1T_1R (
+      ACPI_OPERAND_OBJECT     **Operand = &WalkState->Operands[0];
+      ACPI_OPERAND_OBJECT     *ReturnDesc = NULL;
+      UINT64                  Index;
+ +    UINT64                  ReturnValue = 0;
+      ACPI_STATUS             Status = AE_OK;
+      ACPI_SIZE               Length;
+  
 -@@ -400,7 +405,8 @@
++@@ -400,7 +405,8 @@ AcpiExOpcode_2A_1T_1R (
+          Status = AcpiUtDivide (Operand[0]->Integer.Value,
+                                 Operand[1]->Integer.Value,
+                                 NULL,
+ -                               &ReturnDesc->Integer.Value);
+ +                               &ReturnValue);
+ +        ReturnDesc->Integer.Value = ReturnValue;
+          break;
+  
+  
 -Index: b/compiler/asltree.c
 -===================================================================
 ---- a/compiler/asltree.c	2010-07-02 21:42:26.529349893 +0900
 -+++ b/compiler/asltree.c	2010-07-04 11:18:22.510539385 +0900
 -@@ -501,24 +501,27 @@
 -         "\nCreateValuedLeafNode  Ln/Col %u/%u NewNode %p  Op %s  Value %8.8X%8.8X  ",
 -         Op->Asl.LineNumber, Op->Asl.Column, Op, UtGetOpName(ParseOpcode),
 -         ACPI_FORMAT_UINT64 (Value));
 --    Op->Asl.Value.Integer = Value;
 - 
 -     switch (ParseOpcode)
 -     {
 -     case PARSEOP_STRING_LITERAL:
 --        DbgPrint (ASL_PARSE_OUTPUT, "STRING->%s", Value);
 -+        Op->Asl.Value.String = (ACPI_STRING) Value;
 -+        DbgPrint (ASL_PARSE_OUTPUT, "STRING->%s", (ACPI_STRING) Value);
 -         break;
++diff --git a/source/include/actypes.h b/source/include/actypes.h
++index 07fb7d5..08bdf2f 100644
++--- a/source/include/actypes.h
+++++ b/source/include/actypes.h
++@@ -214,6 +214,19 @@ typedef COMPILER_DEPENDENT_INT64        INT64;
++  */
++ #define ACPI_THREAD_ID                  UINT64
+  
 -     case PARSEOP_NAMESEG:
 --        DbgPrint (ASL_PARSE_OUTPUT, "NAMESEG->%s", Value);
 -+        Op->Asl.Value.String = (ACPI_STRING) Value;
 -+        DbgPrint (ASL_PARSE_OUTPUT, "NAMESEG->%s", (ACPI_STRING) Value);
 -         break;
 - 
 -     case PARSEOP_NAMESTRING:
 --        DbgPrint (ASL_PARSE_OUTPUT, "NAMESTRING->%s", Value);
 -+        Op->Asl.Value.String = (ACPI_STRING) Value;
 -+        DbgPrint (ASL_PARSE_OUTPUT, "NAMESTRING->%s", (ACPI_STRING) Value);
 -         break;
 - 
 -     case PARSEOP_EISAID:
 --        DbgPrint (ASL_PARSE_OUTPUT, "EISAID->%s", Value);
 -+        Op->Asl.Value.String = (ACPI_STRING) Value;
 -+        DbgPrint (ASL_PARSE_OUTPUT, "EISAID->%s", (ACPI_STRING) Value);
 -         break;
 - 
 -     case PARSEOP_METHOD:
 -@@ -526,10 +529,12 @@
 -         break;
+++/*
+++ * In the case of the Itanium Processor Family (IPF), the hardware does not
+++ * support misaligned memory transfers. Set the MISALIGNMENT_NOT_SUPPORTED flag
+++ * to indicate that special precautions must be taken to avoid alignment faults.
+++ * (IA64 or ia64 is currently used by existing compilers to indicate IPF.)
+++ *
+++ * Note: EM64T and other X86-64 processors support misaligned transfers,
+++ * so there is no need to define this flag.
+++ */
+++#if defined (__IA64__) || defined (__ia64__) || defined(__alpha__) || defined(__sparc__) || defined(__hppa__) || defined(__arm__)
+++#define ACPI_MISALIGNMENT_NOT_SUPPORTED
+++#endif
+++
+  
 -     case PARSEOP_INTEGER:
 -+        Op->Asl.Value.Integer = Value;
 -         DbgPrint (ASL_PARSE_OUTPUT, "INTEGER");
 -         break;
++ /*******************************************************************************
++  *
++@@ -240,19 +253,6 @@ typedef UINT64                          ACPI_PHYSICAL_ADDRESS;
++ #define ACPI_SIZE_MAX                   ACPI_UINT64_MAX
++ #define ACPI_USE_NATIVE_DIVIDE          /* Has native 64-bit integer support */
+  
 -     default:
 -+        Op->Asl.Value.Integer = Value;
 -         break;
 -     }
++-/*
++- * In the case of the Itanium Processor Family (IPF), the hardware does not
++- * support misaligned memory transfers. Set the MISALIGNMENT_NOT_SUPPORTED flag
++- * to indicate that special precautions must be taken to avoid alignment faults.
++- * (IA64 or ia64 is currently used by existing compilers to indicate IPF.)
++- *
++- * Note: EM64T and other X86-64 processors support misaligned transfers,
++- * so there is no need to define this flag.
++- */
++-#if defined (__IA64__) || defined (__ia64__)
++-#define ACPI_MISALIGNMENT_NOT_SUPPORTED
++-#endif
++-
+  
++ /*******************************************************************************
++  *
++-- 
++1.7.12.1
+ 
diff --cc iasl.spec
index 84d6c4d,cf6748b..9e517be
--- a/iasl.spec
+++ b/iasl.spec
@@@ -13,8 -13,9 +13,10 @@@ BuildRoot:      %{_tmppath}/%{name}-%{v
  
  BuildRequires:  bison patchutils flex
  
 -Patch0:		debian-overridable_cflags.patch
 -Patch1:		debian-big_endian.patch
 -Patch2:		debian-unaligned.patch
 +# Configure.  See top of patch for details.
- Patch1:         iasl-config.patch
++Patch0:         iasl-config.patch
++Patch1:	        debian-big_endian.patch
++Patch2:	        debian-unaligned.patch
  
  %description
  iasl compiles ASL (ACPI Source Language) into AML (ACPI Machine Language),
@@@ -51,17 -58,11 +55,22 @@@ rm -rf $RPM_BUILD_ROO
  
  
  %changelog
 -* Wed Oct 17 2012 Paolo Bonzini <pbonzini at redhat.com> - 20100528-6
++* Wed Oct 17 2012 Paolo Bonzini <pbonzini at redhat.com> - 20120913-4
+ - Incorporated Debian patches for endian-cleanliness
+   (http://lists.acpica.org/pipermail/devel/2010-July/000159.html);
+ - Resolves: #865013, #856856
+ 
 +* Thu Oct 11 2012 Richard W.M. Jones <rjones at redhat.com> - 20120913-3
 +- Update to latest upstream version (20120913).
 +- Fix project homepage.
 +- Remove the old patches, since they don't affect the new version.
 +- Add a configuration patch.
 +- Fix .gitignore file.
 +- Update build and install rules for new source layout.
 +
 +* Wed Oct 10 2012 Richard W.M. Jones <rjones at redhat.com> - 20100528-6
 +- Fix errors found using gcc -Wall (RHBZ#856856).
 +
  * Thu Jul 19 2012 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 20100528-5
  - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
  


More information about the scm-commits mailing list