[acpica-tools] Initial import (#904843).

Al Stone ahs3 at fedoraproject.org
Wed Aug 28 19:31:48 UTC 2013


commit afae4e7dc39a1ab7d7940a288d2c646e724c9edf
Author: Al Stone <ahs3 at redhat.com>
Date:   Wed Aug 28 13:31:28 2013 -0600

    Initial import (#904843).

 .gitignore              |    2 +
 COPYING                 |  339 +++++++
 README.Fedora           |   26 +
 aapits-linux.patch      |  530 ++++++++++
 acpibin.1               |   64 ++
 acpica-tools.spec       |  295 ++++++
 acpidump.1              |  106 ++
 acpiexec.1              |  102 ++
 acpihelp.1              |   80 ++
 acpinames.1             |   49 +
 acpisrc.1               |   72 ++
 acpixtract.1            |   60 ++
 badcode.asl.result      |  221 +++++
 debian-big_endian.patch | 2490 +++++++++++++++++++++++++++++++++++++++++++++++
 debian-unaligned.patch  |  163 +++
 grammar.asl.result      |   68 ++
 iasl.1                  |  231 +++++
 name-miscompare.patch   |   27 +
 run-misc-tests.sh       |   52 +
 sources                 |    2 +
 20 files changed, 4979 insertions(+), 0 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index e69de29..b14787e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1,2 @@
+/acpica-unix2-20130823.tar.gz
+/acpitests-unix-20130823.tar.gz
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..d159169
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,339 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                            NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/README.Fedora b/README.Fedora
new file mode 100644
index 0000000..c1c7f25
--- /dev/null
+++ b/README.Fedora
@@ -0,0 +1,26 @@
+Packaging Notes for Fedora
+==========================
+The upstream source contains documentation that may or may not be licensed
+in a freely redistributable manner.  In an excess of caution, the manuals in
+question have been removed from the source we start with.  You can still get
+your own copies of the documentation from here:
+
+   https://www.acpica.org/documentation/
+
+The two manuals affected are:
+
+   (1) ACPICA Reference Manual, describing the ACPI Component Architecture
+       in some detail, and
+
+   (2) ASL Compiler Reference Manual, describing how to use iasl
+
+While there are man pages for the commands, they are very brief.  The
+documents above are recommended reading.
+
+
+Test Cases
+==========
+The aapits tests do not currently build properly.  They will be added to
+this package once they do.  In the meantime, ASL, template and misc tests
+will be run as part of %check.
+
diff --git a/aapits-linux.patch b/aapits-linux.patch
new file mode 100644
index 0000000..79bbaff
--- /dev/null
+++ b/aapits-linux.patch
@@ -0,0 +1,530 @@
+diff -urN acpica-unix2-20130626/tests/aapits/atexec.c acpica-unix2-20130626-aapits/tests/aapits/atexec.c
+--- acpica-unix2-20130626/tests/aapits/atexec.c	2013-01-17 12:48:28.000000000 -0700
++++ acpica-unix2-20130626-aapits/tests/aapits/atexec.c	2013-07-25 13:44:23.023894441 -0600
+@@ -530,6 +530,7 @@
+ }
+ 
+ 
++#if ACPI_MACHINE_WIDTH == 32
+ /*******************************************************************************
+  *
+  * FUNCTION:    AtBuildLocalRSDT
+@@ -648,8 +649,9 @@
+         LocalRSDT->Header.Checksum = (UINT8)~LocalRSDT->Header.Checksum;
+     }
+ }
++#endif
+ 
+ 
+ /*******************************************************************************
+  *
+  * FUNCTION:    AtBuildLocalXSDT
+@@ -1315,7 +1319,7 @@
+         ACPI_WARNING ((AE_INFO,
+             "Request on [%4.4s] is beyond region limit Req-%X+%X, Base=%X, Len-%X\n",
+             (RegionObject->Region.Node)->Name.Ascii, (UINT32) Address,
+-            ByteWidth, (UINT32) BufferAddress, Length));
++            ByteWidth, (UINT32) BufferAddress, (UINT32) Length));
+ 
+         return (AE_AML_REGION_LIMIT);
+     }
+@@ -1683,7 +1687,9 @@
+             Path, Obj.Integer.Value, Value);
+ #else
+         printf ("API Error: Value of %s is 0x%llx instead of expected 0x%llx\n",
+-            Path, Obj.Integer.Value, Value);
++            Path,
++	    (long long unsigned int) Obj.Integer.Value,
++	    (long long unsigned int) Value);
+ #endif
+         Status = AE_ERROR;
+     }
+@@ -1762,7 +1768,7 @@
+     {
+         TestErrors++;
+         printf ("Test Error: cannot allocate buffer of %d bytes\n",
+-            Results.Length);
++                (int) Results.Length);
+         return (AE_NO_MEMORY);
+     }
+     Results.Pointer = Object;
+@@ -1843,7 +1849,8 @@
+     {
+         printf ("AtCheckBuffer: unexpected length %d of Buffer vs"
+             " calculated %d bytes\n",
+-            Results.Length, ACPI_ROUND_UP_TO_NATIVE_WORD(sizeof (ACPI_OBJECT) + Length));
++            (int)Results.Length,
++	    (int)(ACPI_ROUND_UP_TO_NATIVE_WORD(sizeof (ACPI_OBJECT) + Length)));
+     }
+ 
+     /* Initialize the return buffer structure */
+@@ -1852,7 +1859,7 @@
+     {
+         TestErrors++;
+         printf ("Test Error: cannot allocate buffer of %d bytes\n",
+-            Results.Length);
++            (int) Results.Length);
+         return (AE_NO_MEMORY);
+     }
+     Results.Pointer = Object;
+diff -urN acpica-unix2-20130626/tests/aapits/atinit.c acpica-unix2-20130626-aapits/tests/aapits/atinit.c
+--- acpica-unix2-20130626/tests/aapits/atinit.c	2013-01-17 12:48:28.000000000 -0700
++++ acpica-unix2-20130626-aapits/tests/aapits/atinit.c	2013-07-25 13:20:19.706705960 -0600
+@@ -2915,7 +2915,7 @@
+             AapiErrors++;
+             printf ("API Error: AcpiGetSystemInfo() returned"
+                 " Length %d, expected %d\n",
+-                OutBuffer.Length, sizeof (Info));
++                (int) OutBuffer.Length, (int) sizeof (Info));
+             return (AE_ERROR);
+         }
+ 
+@@ -2937,7 +2937,7 @@
+             AapiErrors++;
+             printf ("API Error: AcpiGetSystemInfo() returned"
+                 " Length %d, expected %d\n",
+-                OutBuffer.Length, sizeof (Info));
++                (int) OutBuffer.Length, (int) sizeof (Info));
+             return (AE_ERROR);
+         }
+ 
+@@ -2957,7 +2957,7 @@
+             AapiErrors++;
+             printf ("API Error: AcpiGetSystemInfo() returned"
+                 " Length %d, expected %d\n",
+-                OutBuffer.Length, sizeof (Info));
++                (int) OutBuffer.Length, (int) sizeof (Info));
+             return (AE_ERROR);
+         }
+         else if (OutBuffer.Pointer != &Info)
+@@ -3040,7 +3040,7 @@
+             AapiErrors++;
+             printf ("API Error: AcpiGetSystemInfo() returned"
+                 " Length %d, expected %d\n",
+-                OutBuffer.Length, sizeof (Info));
++                (int) OutBuffer.Length, (int) sizeof (Info));
+             return (AE_ERROR);
+         }
+         else if (OutBuffer.Pointer != &Info)
+@@ -3105,7 +3105,7 @@
+             AapiErrors++;
+             printf ("API Error: AcpiGetSystemInfo() returned"
+                 " Length %d, expected %d\n",
+-                OutBuffer.Length, sizeof (ACPI_SYSTEM_INFO));
++                (int) OutBuffer.Length, (int) sizeof (ACPI_SYSTEM_INFO));
+             return (AE_ERROR);
+         }
+         else
+diff -urN acpica-unix2-20130626/tests/aapits/atmain.c acpica-unix2-20130626-aapits/tests/aapits/atmain.c
+--- acpica-unix2-20130626/tests/aapits/atmain.c	2013-01-17 12:48:28.000000000 -0700
++++ acpica-unix2-20130626-aapits/tests/aapits/atmain.c	2013-07-25 13:18:22.083323948 -0600
+@@ -206,7 +206,7 @@
+     {
+         printf ("ACPICA API TS err: test num %ld of test case %ld"
+             " is not implemented\n",
+-            test_num, test_case);
++            (long int) test_num, (long int) test_case);
+         return (AtRetNotImpl);
+     }
+ 
+@@ -321,7 +323,7 @@
+     if (test_case < 1 || test_case > AT_TEST_CASE_NUM)
+     {
+         printf ("ACPICA API TS err: test case %ld is out of range 1 - %d\n",
+-            test_case, AT_TEST_CASE_NUM);
++            (long int) test_case, (int) AT_TEST_CASE_NUM);
+         return (AtRetBadParam);
+     }
+ 
+@@ -329,7 +331,7 @@
+     if (test_num < 0 || test_num > AtTestCase[test_case].TestsNum)
+     {
+         printf ("ACPICA API TS err: test num %ld is out of range 0 - %d\n",
+-            test_num, AtTestCase[test_case].TestsNum);
++            (long int) test_num, AtTestCase[test_case].TestsNum);
+         return (AtRetBadParam);
+     }
+
+diff -urN acpica-unix2-20130626/tests/aapits/atnamespace.c acpica-unix2-20130626-aapits/tests/aapits/atnamespace.c
+--- acpica-unix2-20130626/tests/aapits/atnamespace.c	2013-01-17 12:48:28.000000000 -0700
++++ acpica-unix2-20130626-aapits/tests/aapits/atnamespace.c	2013-07-25 13:24:15.366466707 -0600
+@@ -2426,7 +2426,8 @@
+ #else
+                 printf ("API Error: Address of %s (0x%llX) != (0x%llX)\n",
+                     PathNames[2 * i + 1],
+-                    Info->Address, ExpectedInfo[i].Address);
++                    (long long unsigned int) Info->Address,
++		    (long long unsigned int) ExpectedInfo[i].Address);
+ #endif
+ #else
+                 printf ("API Error: Address of %s (0x%X) != (0x%X)\n",
+@@ -2799,7 +2800,8 @@
+         TestErrors++;
+         printf ("AtGetNextObjectTypeCommon: different numbers of entities"
+             "in TypesNames (%d) and LevelTypes0000 (%d)\n",
+-            TypesCount, sizeof (LevelTypes0000) / sizeof (ACPI_OBJECT_TYPE));
++            TypesCount,
++	    (int) (sizeof (LevelTypes0000) / sizeof (ACPI_OBJECT_TYPE)));
+         return (AE_ERROR);
+     }
+ 
+@@ -4083,7 +4085,9 @@
+             Pathname, Obj.Integer.Value, Value);
+ #else
+         printf ("API Error: Value of %s is 0x%llx instead of expected 0x%llx\n",
+-            Pathname, Obj.Integer.Value, Value);
++            Pathname,
++	    (long long unsigned int) Obj.Integer.Value,
++	    (long long unsigned int) Value);
+ #endif
+         Status = AE_ERROR;
+     }
+@@ -5090,7 +5094,7 @@
+             {
+                 AapiErrors++;
+                 printf ("API Error: AcpiOsAllocate(%d) returned NULL\n",
+-                    OutName.Length);
++                    (int) OutName.Length);
+                 return (AE_ERROR);
+             }
+         }
+diff -urN acpica-unix2-20130626/tests/aapits/atosxfctrl.c acpica-unix2-20130626-aapits/tests/aapits/atosxfctrl.c
+--- acpica-unix2-20130626/tests/aapits/atosxfctrl.c	2013-01-17 12:48:28.000000000 -0700
++++ acpica-unix2-20130626-aapits/tests/aapits/atosxfctrl.c	2013-07-25 13:30:00.375492751 -0600
+@@ -622,13 +622,15 @@
+ #if ACPI_MACHINE_WIDTH == 64
+ #ifdef    _MSC_VER
+         printf("OsxfCtrlFingReg: unexpected Width %d of Reg 0x%I64x\n",
++            Width, Address);
+ #else
+         printf("OsxfCtrlFingReg: unexpected Width %d of Reg 0x%llx\n",
++            Width, (long long unsigned int) Address);
+ #endif
+ #else
+         printf("OsxfCtrlFingReg: unexpected Width %d of Reg 0x%x\n",
+-#endif
+             Width, Address);
++#endif
+         return (NULL);
+     }
+ 
+@@ -649,15 +651,19 @@
+ #ifdef    _MSC_VER
+                 printf("OsxfCtrlFingReg: intersection Regs (0x%I64x: 0x%x)"
+                     " and (0x%I64x: 0x%x)\n",
++                    Reg->Address, Reg->Width, Address, Width);
+ #else
+                 printf("OsxfCtrlFingReg: intersection Regs (0x%llx: 0x%x)"
+                     " and (0x%llx: 0x%x)\n",
++                    (long long unsigned int) Reg->Address,
++		    Reg->Width,
++		    (long long unsigned int) Address, Width);
+ #endif
+ #else
+                 printf("OsxfCtrlFingReg: intersection Regs (0x%x: 0x%x)"
+                     " and (0x%x: 0x%x)\n",
+-#endif
+                     Reg->Address, Reg->Width, Address, Width);
++#endif
+                 return (NULL);
+             }
+         }
+@@ -671,13 +677,15 @@
+ #if ACPI_MACHINE_WIDTH == 64
+ #ifdef    _MSC_VER
+             printf("OsxfCtrlFingReg: no memory for Reg (0x%I64x: 0x%x)\n",
++                Reg->Address, Reg->Width);
+ #else
+             printf("OsxfCtrlFingReg: no memory for Reg (0x%llx: 0x%x)\n",
++                (long long unsigned int) Reg->Address, Reg->Width);
+ #endif
+ #else
+             printf("OsxfCtrlFingReg: no memory for Reg (0x%x: 0x%x)\n",
+-#endif
+                 Reg->Address, Reg->Width);
++#endif
+             return (NULL);
+         }
+         Reg->Type = Type;
+@@ -817,14 +825,19 @@
+ #if ACPI_MACHINE_WIDTH == 64
+ #ifdef    _MSC_VER
+             printf("%.2u (%s Address 0x%I64x: Width %.2u) r/w counts: %u/%u\n",
++                i, (Reg->Type == EMUL_REG_SYS)? "SYS": "IO",
++                Reg->Address, Reg->Width, Reg->ReadCount, Reg->WriteCount);
+ #else
+             printf("%.2u (%s Address 0x%llx: Width %.2u) r/w counts: %u/%u\n",
++                i, (Reg->Type == EMUL_REG_SYS)? "SYS": "IO",
++                (long long unsigned int) Reg->Address,
++		Reg->Width, Reg->ReadCount, Reg->WriteCount);
+ #endif
+ #else
+             printf("%.2u (%s Address 0x%.4x: Width %.2u) r/w counts: %u/%u\n",
+-#endif
+                 i, (Reg->Type == EMUL_REG_SYS)? "SYS": "IO",
+                 Reg->Address, Reg->Width, Reg->ReadCount, Reg->WriteCount);
++#endif
+             Reg = Reg->Next;
+             i++;
+         }
+diff -urN acpica-unix2-20130626/tests/aapits/atresource.c acpica-unix2-20130626-aapits/tests/aapits/atresource.c
+--- acpica-unix2-20130626/tests/aapits/atresource.c	2013-01-17 12:48:29.000000000 -0700
++++ acpica-unix2-20130626-aapits/tests/aapits/atresource.c	2013-07-25 13:25:49.423565947 -0600
+@@ -65,7 +65,7 @@
+         AapiErrors++;
+         printf ("API Error: AcpiGetCurrentResources(%s) returned Length %d,"
+             " expected %d\n",
+-            Pathname, OutBuffer.Length, RT0000_DEV0_CRS_LEN);
++            Pathname, (int) OutBuffer.Length, RT0000_DEV0_CRS_LEN);
+         return (AE_ERROR);
+     }
+ 
+@@ -381,7 +381,7 @@
+         AapiErrors++;
+         printf ("API Error: AcpiGetCurrentResources(%s) returned Length %d,"
+             " expected %d\n",
+-            Pathname, OutBuffer.Length, RT0000_DEV0_CRS_LEN);
++            Pathname, (int) OutBuffer.Length, RT0000_DEV0_CRS_LEN);
+         return (AE_ERROR);
+     }
+ 
+@@ -580,7 +580,7 @@
+         AapiErrors++;
+         printf ("Api Error: Resource->Length (%d) != %d\n",
+             CurrentResource->Length,
+-            ACPI_ROUND_UP_TO_NATIVE_WORD (ACPI_RS_SIZE (ACPI_RESOURCE_IRQ)));
++            (int) (ACPI_ROUND_UP_TO_NATIVE_WORD (ACPI_RS_SIZE (ACPI_RESOURCE_IRQ))));
+     }
+ 
+     if (CurrentResource->Data.Irq.Triggering != 0) /* Level-Triggered */
+@@ -872,7 +872,7 @@
+         AapiErrors++;
+         printf ("API Error: AcpiGetPossibleResources(%s) returned Length %d,"
+             " expected %d\n",
+-            Pathname, OutBuffer.Length, RT0000_DEV0_CRS_LEN);
++            Pathname, (int) OutBuffer.Length, RT0000_DEV0_CRS_LEN);
+         return (AE_ERROR);
+     }
+ 
+@@ -1814,7 +1814,7 @@
+         AapiErrors++;
+         printf ("API Error: AcpiGetIrqRoutingTable(%s) returned Length %d,"
+             " expected %d\n",
+-            Pathname, OutBuffer.Length, 0xA48);
++            Pathname, (int) OutBuffer.Length, 0xA48);
+         return (AE_ERROR);
+     }
+
+diff -urN acpica-unix2-20130626/tests/aapits/Makefile acpica-unix2-20130626-aapits/tests/aapits/Makefile
+--- acpica-unix2-20130626/tests/aapits/Makefile	2013-01-17 12:48:29.000000000 -0700
++++ acpica-unix2-20130626-aapits/tests/aapits/Makefile	2013-07-25 15:17:09.309236422 -0600
+@@ -20,37 +20,52 @@
+ 	../../source/components/hardware/hwxface.c \
+ 	../../source/common/getopt.c \
+ 	../../source/components/debugger/dbcmds.c \
++	../../source/components/debugger/dbconvert.c \
+ 	../../source/components/debugger/dbdisply.c \
+ 	../../source/components/debugger/dbexec.c \
+ 	../../source/components/debugger/dbfileio.c \
+ 	../../source/components/debugger/dbhistry.c \
+ 	../../source/components/debugger/dbinput.c \
++	../../source/components/debugger/dbmethod.c \
++	../../source/components/debugger/dbnames.c \
+ 	../../source/components/debugger/dbstats.c \
+ 	../../source/components/debugger/dbutils.c \
+ 	../../source/components/debugger/dbxface.c \
+ 	../../source/components/disassembler/dmbuffer.c \
++	../../source/components/disassembler/dmdeferred.c \
+ 	../../source/components/disassembler/dmnames.c \
+ 	../../source/components/disassembler/dmobject.c \
+ 	../../source/components/disassembler/dmopcode.c \
+ 	../../source/components/disassembler/dmresrc.c \
+ 	../../source/components/disassembler/dmresrcl.c \
++	../../source/components/disassembler/dmresrcl2.c \
+ 	../../source/components/disassembler/dmresrcs.c \
+ 	../../source/components/disassembler/dmutils.c \
+ 	../../source/components/disassembler/dmwalk.c \
+ 	../../source/components/events/evevent.c \
++	../../source/components/events/evglock.c \
+ 	../../source/components/events/evgpeblk.c \
+ 	../../source/components/events/evgpe.c \
++	../../source/components/events/evgpeinit.c \
++	../../source/components/events/evgpeutil.c \
++	../../source/components/events/evhandler.c \
+ 	../../source/components/events/evmisc.c \
+ 	../../source/components/events/evregion.c \
+ 	../../source/components/events/evrgnini.c \
+ 	../../source/components/events/evsci.c \
+ 	../../source/components/events/evxface.c \
+ 	../../source/components/events/evxfevnt.c \
++	../../source/components/events/evxfgpe.c \
+ 	../../source/components/events/evxfregn.c \
+ 	../../source/components/hardware/hwacpi.c \
++	../../source/components/hardware/hwesleep.c \
+ 	../../source/components/hardware/hwgpe.c \
++	../../source/components/hardware/hwpci.c \
+ 	../../source/components/hardware/hwregs.c \
+ 	../../source/components/hardware/hwsleep.c \
++	../../source/components/hardware/hwxfsleep.c \
++	../../source/components/dispatcher/dsargs.c \
++	../../source/components/dispatcher/dscontrol.c \
+ 	../../source/components/dispatcher/dsfield.c \
+ 	../../source/components/dispatcher/dsinit.c \
+ 	../../source/components/dispatcher/dsmethod.c \
+@@ -60,11 +75,13 @@
+ 	../../source/components/dispatcher/dsutils.c \
+ 	../../source/components/dispatcher/dswexec.c \
+ 	../../source/components/dispatcher/dswload.c \
++	../../source/components/dispatcher/dswload2.c \
+ 	../../source/components/dispatcher/dswscope.c \
+ 	../../source/components/dispatcher/dswstate.c \
+ 	../../source/components/executer/exconfig.c \
+ 	../../source/components/executer/exconvrt.c \
+ 	../../source/components/executer/excreate.c \
++	../../source/components/executer/exdebug.c \
+ 	../../source/components/executer/exdump.c \
+ 	../../source/components/executer/exfield.c \
+ 	../../source/components/executer/exfldio.c \
+@@ -87,7 +104,9 @@
+ 	../../source/components/executer/exutils.c \
+ 	../../source/components/parser/psargs.c \
+ 	../../source/components/parser/psloop.c \
++	../../source/components/parser/psobject.c \
+ 	../../source/components/parser/psopcode.c \
++	../../source/components/parser/psopinfo.c \
+ 	../../source/components/parser/psparse.c \
+ 	../../source/components/parser/psscope.c \
+ 	../../source/components/parser/pstree.c \
+@@ -96,6 +115,8 @@
+ 	../../source/components/parser/psxface.c \
+ 	../../source/components/namespace/nsaccess.c \
+ 	../../source/components/namespace/nsalloc.c \
++	../../source/components/namespace/nsarguments.c \
++	../../source/components/namespace/nsconvert.c \
+ 	../../source/components/namespace/nsdump.c \
+ 	../../source/components/namespace/nsdumpdv.c \
+ 	../../source/components/namespace/nseval.c \
+@@ -105,6 +126,7 @@
+ 	../../source/components/namespace/nsobject.c \
+ 	../../source/components/namespace/nsparse.c \
+ 	../../source/components/namespace/nspredef.c \
++	../../source/components/namespace/nsprepkg.c \
+ 	../../source/components/namespace/nsrepair.c \
+ 	../../source/components/namespace/nsrepair2.c \
+ 	../../source/components/namespace/nssearch.c \
+@@ -117,26 +139,35 @@
+ 	../../source/components/resources/rscalc.c \
+ 	../../source/components/resources/rscreate.c \
+ 	../../source/components/resources/rsdump.c \
++	../../source/components/resources/rsdumpinfo.c \
++	../../source/components/resources/rsinfo.c \
+ 	../../source/components/resources/rsio.c \
+ 	../../source/components/resources/rsirq.c \
+ 	../../source/components/resources/rslist.c \
+ 	../../source/components/resources/rsmemory.c \
+ 	../../source/components/resources/rsmisc.c \
++	../../source/components/resources/rsserial.c \
+ 	../../source/components/resources/rsutils.c \
+ 	../../source/components/resources/rsxface.c \
+-	../../source/components/resources/rsinfo.c \
+ 	../../source/components/tables/tbfadt.c \
+ 	../../source/components/tables/tbfind.c \
+ 	../../source/components/tables/tbinstal.c \
++	../../source/components/tables/tbprint.c \
+ 	../../source/components/tables/tbutils.c \
+ 	../../source/components/tables/tbxface.c \
++	../../source/components/tables/tbxfload.c \
+ 	../../source/components/tables/tbxfroot.c \
++	../../source/components/utilities/utaddress.c \
+ 	../../source/components/utilities/utalloc.c \
++	../../source/components/utilities/utbuffer.c \
+ 	../../source/components/utilities/utcache.c \
+ 	../../source/components/utilities/utcopy.c \
+ 	../../source/components/utilities/utdebug.c \
++	../../source/components/utilities/utdecode.c \
+ 	../../source/components/utilities/utdelete.c \
++	../../source/components/utilities/uterror.c \
+ 	../../source/components/utilities/uteval.c \
++	../../source/components/utilities/utexcep.c \
+ 	../../source/components/utilities/utglobal.c \
+ 	../../source/components/utilities/utids.c \
+ 	../../source/components/utilities/utinit.c \
+@@ -145,17 +176,23 @@
+ 	../../source/components/utilities/utmisc.c \
+ 	../../source/components/utilities/utmutex.c \
+ 	../../source/components/utilities/utobject.c \
++	../../source/components/utilities/utosi.c \
++	../../source/components/utilities/utownerid.c \
++	../../source/components/utilities/utpredef.c \
+ 	../../source/components/utilities/utresrc.c \
+ 	../../source/components/utilities/utstate.c \
++	../../source/components/utilities/utstring.c \
+ 	../../source/components/utilities/uttrack.c \
+-	../../source/components/utilities/utxface.c
++	../../source/components/utilities/utxface.c \
++	../../source/components/utilities/utxferror.c \
++	../../source/components/utilities/utxfinit.c
+ #	../../source/components/osunixxf.c
+ 
+ 
+ CFLAGS+= -Wall -g -D_LINUX -DNDEBUG -D_CONSOLE -DACPI_EXEC_APP -D_MULTI_THREADED -Wstrict-prototypes -I../../source/include 
+ 
+ 
+-acpiexec : $(patsubst %.c,%.o, $(SRCS))
++$(PROG) : $(patsubst %.c,%.o, $(SRCS))
+ 	$(CC) $(LDFLAGS) $(patsubst %.c,%.o, $(SRCS)) -o $(PROG)
+ 
+ CLEANFILES= $(PROG)
+diff -urN acpica-unix2-20130626/tests/aapits/osunixxf.c acpica-unix2-20130626-aapits/tests/aapits/osunixxf.c
+--- acpica-unix2-20130626/tests/aapits/osunixxf.c	2013-01-17 12:48:29.000000000 -0700
++++ acpica-unix2-20130626-aapits/tests/aapits/osunixxf.c	2013-07-25 15:11:08.225425856 -0600
+@@ -384,7 +384,6 @@
+     const char              *Fmt,
+     va_list                 Args)
+ {
+-    INT32                   Count = 0;
+     UINT8                   Flags;
+ 
+ 
+@@ -397,7 +396,7 @@
+         {
+             /* Output file is open, send the output there */
+ 
+-            Count = vfprintf (AcpiGbl_DebugFile, Fmt, Args);
++            vfprintf (AcpiGbl_DebugFile, Fmt, Args);
+         }
+         else
+         {
+@@ -409,7 +408,7 @@
+ 
+     if (Flags & ACPI_DB_CONSOLE_OUTPUT)
+     {
+-        Count = vfprintf (AcpiGbl_OutputFile, Fmt, Args);
++        vfprintf (AcpiGbl_OutputFile, Fmt, Args);
+     }
+ 
+     return;
+@@ -1166,3 +1165,23 @@
+ 
+     return (AE_OK);
+ }
++
++/******************************************************************************
++ *
++ * FUNCTION:    AcpiOsWaitEventsComplete
++ *
++ * PARAMETERS:  None
++ *
++ * RETURN:      None
++ *
++ * DESCRIPTION: Wait for all asynchronous events to complete. This
++ *              implementation does nothing.
++ *
++ *****************************************************************************/
++
++void
++AcpiOsWaitEventsComplete (
++    void)
++{
++    return;
++}
diff --git a/acpibin.1 b/acpibin.1
new file mode 100644
index 0000000..b8448a5
--- /dev/null
+++ b/acpibin.1
@@ -0,0 +1,64 @@
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH ACPIBIN 1 "January 23, 2013"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh        disable hyphenation
+.\" .hy        enable hyphenation
+.\" .ad l      left justify
+.\" .ad b      justify to both left and right margins
+.\" .nf        disable filling
+.\" .fi        enable filling
+.\" .br        insert line break
+.\" .sp <n>    insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+acpibin \- ACPI binary AML file utility
+.SH SYNOPSIS
+.B acpibin
+.RI [ <option> ... ]
+
+.SH DESCRIPTION
+This manual page briefly documents the
+.B acpibin
+command. The option list is taken from the acpibin interactive help.
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invode bold face and italics, 
+.\" respectively.
+.B acpibin
+is a command provided to perform some basic and common operations on
+AML binary files.
+.PP
+Much more detailed documentation may be found at
+http://www.acpica.org/documentation/.
+
+.SH OPTIONS
+
+.PP
+.TP
+.B \-c <file1> <file2>
+Compare two binary AML files
+.TP
+.B \-d <in> <out>
+Dump AML binary to text file
+.TP
+.B \-e <sig> <in> <out>
+Extract binary AML table from acpidump file
+.TP
+.B \-h <file>
+Display table header for binary AML file
+.TP
+.B \-s <file>
+Update checksum for binary AML file
+.TP
+.B \-t
+Terse mode
+
+.SH AUTHOR
+acpibin was written by Robert Moore <robert.moore at intel.com>.
+.PP
+This manual page was written by Al Stone <ahs3 at redhat.com> for the
+Fedora project (but may be used by others).
diff --git a/acpica-tools.spec b/acpica-tools.spec
new file mode 100644
index 0000000..c0cba66
--- /dev/null
+++ b/acpica-tools.spec
@@ -0,0 +1,295 @@
+Name:           acpica-tools
+Version:        20130823
+Release:        2%{?dist}
+Summary:        ACPICA tools for the development and debug of ACPI tables
+
+Group:          Development/Languages
+License:        GPLv2
+URL:            https://www.acpica.org/
+
+Source0:        https://acpica.org/sites/acpica/files/acpica-unix2-%{version}.tar.gz
+Source1:        https://acpica.org/sites/acpica/files/acpitests-unix-%{version}.tar.gz
+Source2:        README.Fedora
+Source3:        iasl.1
+Source4:        acpibin.1
+Source5:        acpidump.1
+Source6:        acpiexec.1
+Source7:        acpihelp.1
+Source8:        acpinames.1
+Source9:        acpisrc.1
+Source10:       acpixtract.1
+Source11:       badcode.asl.result
+Source12:       grammar.asl.result
+Source13:       run-misc-tests.sh
+Source14:       COPYING
+
+Patch0:         debian-big_endian.patch
+Patch1:         debian-unaligned.patch
+Patch2:         name-miscompare.patch
+Patch3:         aapits-linux.patch
+
+BuildRequires:  bison patchutils flex
+
+# The previous iasl package contained only a very small subset of these tools
+# and it produced only the iasl package listed below; further, the pmtools
+# package -- which provides acpidump -- also provides a /usr/sbin/acpixtract
+# that we don't really want to collide with
+Provides:       acpixtract >= 20120913-7
+Provides:       iasl = %{version}-%{release}
+Obsoletes:      iasl < 20120913-7
+
+# The pmtools package provides an obsolete and deprecated version of the
+# acpidump command from lesswatts.org which has now been taken off-line.
+# ACPICA, however, is providing a new version and we again do not want to
+# conflict with the command name.
+Provides:       acpidump >= 20100513-5
+Provides:       pmtools = %{version}-%{release}
+Obsoletes:      pmtools < 20100513-5
+
+%description
+The ACPI Component Architecture (ACPICA) project provides an OS-independent
+reference implementation of the Advanced Configuration and Power Interface
+Specification (ACPI).  ACPICA code contains those portions of ACPI meant to
+be directly integrated into the host OS as a kernel-resident subsystem, and
+a small set of tools to assist in developing and debugging ACPI tables.
+
+This package contains only the user-space tools needed for ACPI table
+development, not the kernel implementation of ACPI.  The following commands
+are installed:
+   -- iasl: compiles ASL (ACPI Source Language) into AML (ACPI Machine
+      Language), suitable for inclusion as a DSDT in system firmware.
+      It also can disassemble AML, for debugging purposes.
+   -- acpibin: performs basic operations on binary AML files (e.g.,
+      comparison, data extraction)
+   -- acpidump: write out the current contents of ACPI tables
+   -- acpiexec: simulate AML execution in order to debug method definitions
+   -- acpihelp: display help messages describing ASL keywords and op-codes
+   -- acpinames: display complete ACPI name space from input AML
+   -- acpisrc: manipulate the ACPICA source tree and format source files
+      for specific environments
+   -- acpixtract: extract binary ACPI tables from acpidump output (see
+      also the pmtools package)
+
+This version of the tools is being released under GPLv2 license.
+
+%prep
+%setup -q -n acpica-unix2-%{version}
+%setup -q -T -D -a 1 -n acpica-unix2-%{version}
+gzip -dc %{SOURCE1} | tar -x --strip-components=1 -f -
+
+%patch0 -p1 -b .debian-big_endian
+%patch1 -p1 -b .debian-unaligned
+%patch2 -p1 -b .name-miscompare
+%patch3 -p1 -b .aapits-linux
+
+cp -p %{SOURCE2} README.Fedora
+cp -p %{SOURCE3} iasl.1
+cp -p %{SOURCE4} acpibin.1
+cp -p %{SOURCE5} acpidump.1
+cp -p %{SOURCE6} acpiexec.1
+cp -p %{SOURCE7} acpihelp.1
+cp -p %{SOURCE8} acpinames.1
+cp -p %{SOURCE9} acpisrc.1
+cp -p %{SOURCE10} acpixtract.1
+cp -p %{SOURCE11} badcode.asl.result
+cp -p %{SOURCE12} grammar.asl.result
+cp -p %{SOURCE13} tests/run-misc-tests.sh
+chmod a+x tests/run-misc-tests.sh
+cp -p %{SOURCE14} COPYING
+
+# spurious executable permissions on text files in upstream
+chmod a-x changes.txt
+chmod a-x source/compiler/new_table.txt
+
+
+%build
+make OPT_CFLAGS="%{optflags}"
+
+
+%install
+# Install the binaries
+mkdir -p %{buildroot}%{_bindir}
+install -pD generate/unix/bin*/* %{buildroot}%{_bindir}/
+mv %{buildroot}%{_bindir}/acpidump %{buildroot}%{_bindir}/acpidump-acpica
+mv %{buildroot}%{_bindir}/acpixtract %{buildroot}%{_bindir}/acpixtract-acpica
+
+# Install the man pages
+mkdir -p %{buildroot}%{_mandir}/man1
+install -pDm 0644 -p -D *.1 %{buildroot}%{_mandir}/man1/
+mv %{buildroot}%{_mandir}/man1/acpixtract.1 \
+   %{buildroot}%{_mandir}/man1/acpixtract-acpica.1
+mv %{buildroot}%{_mandir}/man1/acpidump.1 \
+   %{buildroot}%{_mandir}/man1/acpidump-acpica.1
+
+%check
+cd tests
+
+# ASL tests
+./aslts.sh                         # relies on non-zero exit
+[ $? -eq 0 ] || exit 1
+
+# API tests
+cd aapits
+make
+cd asl
+ASL=%{buildroot}%{_bindir}/iasl make
+cd ../bin
+./aapitsrun
+[ $? -eq 0 ] || exit 1
+cd ../..
+
+# misc tests
+./run-misc-tests.sh %{buildroot}%{_bindir} %{version}
+
+# Template tests
+cd templates
+make
+if [ -f diff.log ]
+then
+    if [ -s diff.log ]
+    then
+        exit 1                  # implies errors occurred
+    fi
+fi
+cd ..
+
+
+%post
+alternatives --install %{_bindir}/acpixtract acpixtract \
+                       %{_bindir}/acpixtract-acpica 120 \
+               --slave %{_mandir}/man1/acpixtract.1.gz acpixtract.1.gz \
+                       %{_mandir}/man1/acpixtract-acpica.1
+
+alternatives --install %{_bindir}/acpidump acpidump \
+                       %{_bindir}/acpidump-acpica 120 \
+               --slave %{_mandir}/man1/acpidump.1.gz acpidump.1.gz \
+                       %{_mandir}/man1/acpidump-acpica.1
+
+
+%postun
+if [ ! -e %{_bindir}/acpixtract-acpica ]
+then
+    alternatives --remove acpixtract %{_bindir}/acpixtract-acpica
+fi
+if [ ! -e %{_bindir}/acpidump-acpica ]
+then
+    alternatives --remove acpidump %{_bindir}/acpidump-acpica
+fi
+
+
+%files
+%doc changes.txt source/compiler/new_table.txt
+%doc README.Fedora COPYING
+%{_bindir}/*
+%{_mandir}/*/*
+
+
+%changelog
+* Tue Aug 27 2013 Al Stone <ahs3 at redhat.com> - 20130823-2
+- Add in a copy of the GPLv2 text in order to comply with the requirement
+  to always redistribute the terms of the license.
+
+* Mon Aug 26 2013 Al Stone <ahs3 at redhat.com> - 20130823-1
+- Update to latest upstream source.
+
+* Tue Aug 20 2013 Al Stone <ahs3 at redhat.com> - 20130725-2
+- Fix several rpmlint items (listed below)
+- Add versions to explicit provides for acpixtract, acpidump
+- Not all setup steps used -q
+- Setup executable test script (run-misc-tests.sh) differently
+- Removed unneeded commented out line with macros in it
+- Removed mixed use of spaces and tabs (all spaces now)
+- Corrected source URLs (upstream moved)
+
+* Sun Aug 18 2013 Al Stone <ahs3 at redhat.com> - 20130725-1
+- Update to latest upstream source.
+
+* Wed Jul 24 2013 Al Stone <ahs3 at redhat.com> - 20130626-1
+- Update to latest upstream source.
+- Move acpidump to acpidump-acpica so it be an alternative properly
+- Add basic man page for acpidump
+- Enable use of AAPITS tests during the check step
+
+* Sun Jun 02 2013 Al Stone <ahs3 at redhat.com> - 20130517-2
+- Correct an oversight: we provide an acpidump in conflict with the
+  version in pmtools (which appears to be dead upstream) but had not
+  made it an alternative before
+
+* Tue May 28 2013 Al Stone <ahs3 at redhat.com> - 20130517-1
+- Update to latest upstream source.
+- Remove acpica-tools-config.patch -- now in upstream
+- Remove iasl-signed-char.patch -- now in upstream
+- Updated debian-big_endian.patch
+- Updated debian-unaligned.patch
+
+* Mon May 13 2013 Al Stone <ahs3 at redhat.com> - 20130328-1
+- Update to latest upstream source.
+
+* Wed Mar 20 2013 Al Stone <ahs3 at redhat.com> - 20130214-2
+- Incorporate use of optflags macro in the build.
+- Remove extraneous rm -rf of buildroot.
+- Remove extraneous use of defattr in the files section.
+- Incorporate use of parallel make.
+- Remove extraneous use of the clean section.
+- Use simpler globbing in the files section.
+- Use simpler globbing in the install section.
+- Remove obsolete git notes from README.Fedora.
+- Remove ExcludeArch restrictions.
+
+* Mon Feb 18 2013 Al Stone <ahs3 at redhat.com> - 20130214-1
+- New upstream.
+- Remove most of the config file patch; still need to remove -m{32,64}.
+- Clarify the licensing; this source is dual-licensed and is being released
+  under the GPLv2 as allowed by the original Intel license.
+- Redo the misc tests so they compare results properly.
+
+* Wed Feb 06 2013 Al Stone <ahs3 at redhat.com> - 20130117-6
+- Added a zero-fill to a date used in comparing testing results so that the
+  comparison would be correct on days numbered < 10.
+
+* Thu Jan 31 2013 Al Stone <ahs3 at redhat.com> - 20130117-5
+- Simplify versioning scheme and revert to the original scheme in use by
+  iasl, which is use the latest official tarball date (2013017) as the
+  version and 1%{?dist} as the release, to be incremented for packaging
+  and bug fixes as needed.
+
+* Wed Jan 30 2013 Al Stone <ahs3 at redhat.com> - 20130117-4
+- Do a little reset: go back to using just the original upstream tarball
+  instead of the latest git; the snapshot approach was more complicated
+  than needed.
+- Upstream tarballs split commands from test suites, so had to add the
+  test suite back in as another Source: file.
+- Change versioning scheme to include the APCI specification level (5.0),
+  the latest official tarball date (2013017) and a revision level  (the
+  .1 at the end) for packaging and bug fixes as needed.
+- Changed the License field to reflect the source tarball change; the release
+  tarball is dual-licensed, Intel ACPI or GPLv2.
+- Updated patches to apply cleanly as needed.
+- Corrected Obsoletes and Provides version numbers.
+
+* Mon Jan 28 2013 Al Stone <ahs3 at redhat.com> - 20130117-3
+- Reconcile Fedora and Debian patches to be as alike as possible
+
+* Mon Jan 28 2013 Al Stone <ahs3 at redhat.com> - 20130117-2
+- Verify ExcludeArch restrictions -- the architectures excluded can have
+  no use for these tools.  Hardware support for ACPI is simply not
+  implemented for them.
+- Corrected versioning to note this source came from a git pull.
+- Add License file as upstream has not yet provided one (and has not for
+  many years).
+- Insert properly versioned Provides and Obsoletes for iasl.
+- Corrected files to use man.1* (vs man.1.gz) to allow flexibility in the
+  compression being used.
+
+* Wed Jan 23 2013 Al Stone <ahs3 at redhat.com> - 20130117-1
+- Clone from the current iasl package, with the intent of replacing it
+- Update source to latest upstream
+- NB: ACPICA documentation would normally be included in a source tarball.
+  But, since it is not clearly redistributable, it is not included in the
+  source RPM for this package.
+- Build all ACPICA tools, not just iasl (and hence the package replacement)
+- Add in brief man pages
+- Set up acpixtract from this package as an alternative to the same command
+  in the pmtools package
+- Run the check step once built
+
diff --git a/acpidump.1 b/acpidump.1
new file mode 100644
index 0000000..a3ab061
--- /dev/null
+++ b/acpidump.1
@@ -0,0 +1,106 @@
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH ACPIDUMP 1 "July 24, 2013"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh        disable hyphenation
+.\" .hy        enable hyphenation
+.\" .ad l      left justify
+.\" .ad b      justify to both left and right margins
+.\" .nf        disable filling
+.\" .fi        enable filling
+.\" .br        insert line break
+.\" .sp <n>    insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+acpidump \- ACPI table dump utility
+.SH SYNOPSIS
+.B acpidump
+.RI [ <option> ... ]
+
+.SH DESCRIPTION
+This manual page briefly documents the
+.B acpidump
+command.  The option list is taken from the interactive help.
+.PP
+The
+.B acpidump
+command extracts the ACPI tables currently in use from the running
+kernel in a form usable for later processing by the
+.B acpixtract
+command.
+.PP
+Invocation of
+.B acpidump
+without parameters will dump all available ACPI tables.  Multiple mixed
+instances of the
+.B \-a
+,
+.B \-f
+, and
+.B \-n
+parameters can be used.
+
+.SH OPTIONS
+.PP
+.TP
+.B \-b
+Dump tables in binary format (versus the default human-readable form)
+
+.PP
+.TP
+.B \-h | \-?
+Display this help message
+
+.PP
+.TP
+.B \-o <file>
+Redirect output to a file.  This file can be used later by
+.B acpixtract
+to examine the contents of the ACPI tables.
+
+.PP
+.TP
+.B \-s
+Print table summaries only.
+
+.PP
+.TP
+.B \-v
+Print the version of this utility.
+
+.PP
+.TP
+.B \-z
+Verbose mode.
+
+.PP
+.TP
+.B \-a <address>
+Get a table from a physical address (must be superuser and you must be
+careful which address you use -- dmesg will typically report the addresses
+for the various tables).
+
+.PP
+.TP
+.B \-f <binary-file>
+Get a table from a binary file (see the
+.B \-b
+option).
+
+.PP
+.TP
+.B \-n <signature>
+Get a table via it's name or signature (e.g., MADT or SSDT).
+
+.SH SEE ALSO
+.B acpixtract(1)
+
+.SH AUTHOR
+acpidump was written by Robert Moore <robert.moore at intel.com> and
+Chao Guan <chao.guan at intel.com>.
+.PP
+This manual page was written by Al Stone <ahs3 at redhat.com> for the
+Fedora project (but may be used by others).
diff --git a/acpiexec.1 b/acpiexec.1
new file mode 100644
index 0000000..4b77daa
--- /dev/null
+++ b/acpiexec.1
@@ -0,0 +1,102 @@
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH ACPIEXEC 1 "January 23, 2013"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh        disable hyphenation
+.\" .hy        enable hyphenation
+.\" .ad l      left justify
+.\" .ad b      justify to both left and right margins
+.\" .nf        disable filling
+.\" .fi        enable filling
+.\" .br        insert line break
+.\" .sp <n>    insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+acpiexec \- ACPI AML execution and debug utility
+.SH SYNOPSIS
+.B acpiexec
+.RI [ <option> ... ]
+.RI <aml-file>
+.B ...
+
+.SH DESCRIPTION
+This manual page briefly documents the
+.B acpiexec
+command. The option list is taken from the acpiexec interactive help.
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invode bold face and italics, 
+.\" respectively.
+.B acpiexec
+provides a simulated execution environment for AML code so that it
+can be more easily tested and debugged.
+.PP
+Much more detailed documentation may be found at
+http://www.acpica.org/documentation/.
+
+.SH OPTIONS
+
+.PP
+.TP
+.B \-?
+Display the help message
+.TP
+.B \-b "command-line"
+Batch mode command line execution (cmd1;cmd2;...)
+.TP
+.B \-M [<method>]
+Batch mode method execution (Default: MAIN)
+.TP
+.B \-da
+Disable method abort on error
+.TP
+.B \-di
+Disable execution of _STA/_INI methods during init
+.TP
+.B \-do
+Disable Operation Region address simulation
+.TP
+.B \-dr
+Disable repair of method return values
+.TP
+.B \-dt
+Disable allocation tracking (performance)
+.TP
+.B \-ef
+Enable display of final memory statistics
+.TP
+.B \-ei
+Enable additional tests for ACPICA interfaces
+.TP
+.B \-em
+Enable interpreter Serialized mode
+.TP
+.B \-es
+Enable interpreter Slack mode
+.TP
+.B \-et
+Enable debug semaphore timeour
+.TP
+.B \-f <value>
+Operation Region initialization fill value
+.TP
+.B \-r
+Use hardware-reduced FADT V5
+.TP
+.B \-vi
+Verbose initialization output
+.TP
+.B \-vr
+Verbose region handler output
+.TP
+.B \-x <debug-level>
+Debug output level
+
+.SH AUTHOR
+acpiexec was written by Robert Moore <robert.moore at intel.com>.
+.PP
+This manual page was written by Al Stone <ahs3 at redhat.com> for the
+Fedora project (but may be used by others).
diff --git a/acpihelp.1 b/acpihelp.1
new file mode 100644
index 0000000..fc61014
--- /dev/null
+++ b/acpihelp.1
@@ -0,0 +1,80 @@
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH ACPIHELP 1 "January 23, 2013"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh        disable hyphenation
+.\" .hy        enable hyphenation
+.\" .ad l      left justify
+.\" .ad b      justify to both left and right margins
+.\" .nf        disable filling
+.\" .fi        enable filling
+.\" .br        insert line break
+.\" .sp <n>    insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+acpihelp \- ACPI help utility
+.SH SYNOPSIS
+.B acpihelp
+.RI <option> ...
+.RI [<name-prefix>|<hex-value>]
+
+.SH DESCRIPTION
+This manual page briefly documents the
+.B acpihelp
+command. The option list is taken from the acpihelp interactive help.
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invode bold face and italics, 
+.\" respectively.
+.B acpihelp
+provides descriptive text for AML and ASL keywords, methods, and opcodes.
+.PP
+Much more detailed documentation may be found at
+http://www.acpica.org/documentation/.
+.PP
+If neither a <name-prefix> or a <hex-value> is provided,
+.B acpihelp
+will do the logical equivalent of a "display all."
+.PP
+A default search (that is, a search with no options) and a <name-prefix>
+can mean two different things: (1) if <name-prefix> does not start with
+an underscore, find ASL operator names, or (2) if <name-prefix> does start
+with an underscore, find ASL predefined method names.
+
+.SH OPTIONS
+
+.PP
+.SS ACPI Names and Symbols
+.TP
+.B \-k [<name-prefix>]
+Find/Display ASL non-operator keyword(s)
+.TP
+.B \-m [<name-prefix>]
+Find/Display AML opcode name(s)
+.TP
+.B \-p [<name-prefix>]
+Find/Display ASL predefined method name(s)
+.TP
+.B \-s [<name-prefix>]
+Find/Display ASL operator name(s)
+
+.PP
+.SS ACPI Values
+.TP
+.B \-e [<hex-value>]
+Decode ACPICA exception code
+.TP
+.B \-i
+Display known ACPI Device IDs (_HID)
+.TP
+.B \-i [<hex-value>]
+Decode hex AML opcode
+
+.SH AUTHOR
+acpihelp was written by Robert Moore <robert.moore at intel.com>.
+.PP
+This manual page was written by Al Stone <ahs3 at redhat.com> for the
+Fedora project (but may be used by others).
diff --git a/acpinames.1 b/acpinames.1
new file mode 100644
index 0000000..315d235
--- /dev/null
+++ b/acpinames.1
@@ -0,0 +1,49 @@
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH ACPINAMES 1 "January 23, 2013"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh        disable hyphenation
+.\" .hy        enable hyphenation
+.\" .ad l      left justify
+.\" .ad b      justify to both left and right margins
+.\" .nf        disable filling
+.\" .fi        enable filling
+.\" .br        insert line break
+.\" .sp <n>    insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+acpinames \- ACPI name space dump utility
+.SH SYNOPSIS
+.B acpinames
+.RI <option> ...
+.RI <aml-file>
+
+.SH DESCRIPTION
+This manual page briefly documents the
+.B acpinames
+command. The option list is taken from the acpinames interactive help.
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invode bold face and italics, 
+.\" respectively.
+.B acpinames
+prints out the complete ACPI name space for an AML file.
+.PP
+Much more detailed documentation may be found at
+http://www.acpica.org/documentation/.
+
+.SH OPTIONS
+
+.PP
+.TP
+.B \-? [<name-prefix>]
+Display this help message
+
+.SH AUTHOR
+acpinames was written by Robert Moore <robert.moore at intel.com>.
+.PP
+This manual page was written by Al Stone <ahs3 at redhat.com> for the
+Fedora project (but may be used by others).
diff --git a/acpisrc.1 b/acpisrc.1
new file mode 100644
index 0000000..37d8971
--- /dev/null
+++ b/acpisrc.1
@@ -0,0 +1,72 @@
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH ACPISRC 1 "January 23, 2013"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh        disable hyphenation
+.\" .hy        enable hyphenation
+.\" .ad l      left justify
+.\" .ad b      justify to both left and right margins
+.\" .nf        disable filling
+.\" .fi        enable filling
+.\" .br        insert line break
+.\" .sp <n>    insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+acpisrc \- ACPICA source code conversion utility
+.SH SYNOPSIS
+.B acpisrc
+.RI [ -c | -l | -u] [-d] [-s] [-v] [-y] <source-dir> <dest-dir>
+.RI <aml-file>
+
+.SH DESCRIPTION
+This manual page briefly documents the
+.B acpisrc
+command. The option list is taken from the acpisrc interactive help.
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invode bold face and italics, 
+.\" respectively.
+.B acpisrc
+converts the ACPICA into various forms for use with different operating
+systems.
+Source for ACPICA may be obtained from http://www.acpica.org/source/.
+.PP
+Much more detailed documentation may be found at
+http://www.acpica.org/documentation/.
+
+.SH OPTIONS
+
+.PP
+.TP
+.B \-c
+Generate cleaned version of the source
+.TP
+.B \-h
+Insert dual-license header into all module
+.TP
+.B \-l
+Generate Linux version of the source
+.TP
+.B \-u
+Generate custom source translation
+.TP
+.B \-d
+Leave debug statements in code
+.TP
+.B \-s
+Generate source statistics only
+.TP
+.B \-v
+Verbose mode
+.TP
+.B \-y
+Suppress file overwrite prompts
+
+.SH AUTHOR
+acpisrc was written by Robert Moore <robert.moore at intel.com>.
+.PP
+This manual page was written by Al Stone <ahs3 at redhat.com> for the
+Fedora project (but may be used by others).
diff --git a/acpixtract.1 b/acpixtract.1
new file mode 100644
index 0000000..65239e9
--- /dev/null
+++ b/acpixtract.1
@@ -0,0 +1,60 @@
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH ACPIXTRACT 1 "January 23, 2013"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh        disable hyphenation
+.\" .hy        enable hyphenation
+.\" .ad l      left justify
+.\" .ad b      justify to both left and right margins
+.\" .nf        disable filling
+.\" .fi        enable filling
+.\" .br        insert line break
+.\" .sp <n>    insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+acpixtract \- ACPICA source code conversion utility
+.SH SYNOPSIS
+.B acpixtract
+.RI [ <option> ... ]
+.RI <acpidump-file>
+
+.SH DESCRIPTION
+This manual page briefly documents the
+.B acpixtract
+command. The option list is taken from the acpixtract interactive help.
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invode bold face and italics, 
+.\" respectively.
+.B acpixtract
+extracts binary ACPI tables from the output of the
+.B acpidump
+command (see the
+.B pm-tools
+package).  A default invocation will extract the DSDT and
+all SSDTs.
+.PP
+Much more detailed documentation may be found at
+http://www.acpica.org/documentation/.
+
+.SH OPTIONS
+
+.PP
+.TP
+.B \-a
+Extract all tables, not just DSDT/SSDT
+.TP
+.B \-l
+List table summaries, do not extract
+.TP
+.B \-s <signature>
+Extract all tables with <signature>
+
+.SH AUTHOR
+acpixtract was written by Robert Moore <robert.moore at intel.com>.
+.PP
+This manual page was written by Al Stone <ahs3 at redhat.com> for the
+Fedora project (but may be used by others).
diff --git a/badcode.asl.result b/badcode.asl.result
new file mode 100644
index 0000000..50e4eb4
--- /dev/null
+++ b/badcode.asl.result
@@ -0,0 +1,221 @@
+badcode.asl     25:     Mutex (MTX1, 32)
+Error    6125 -                      ^ SyncLevel must be in the range 0-15
+
+badcode.asl     29:     Name (BIG, 0x1234567887654321)
+Warning  3038 -                                    ^ 64-bit integer in 32-bit table, truncating (DSDT version < 2)
+
+badcode.asl     33:     Name (PKG1, Package(5) {0,1})
+Remark   2063 -                            ^ Initializer list shorter than declared package length
+
+badcode.asl     37:     Name (PATH, Buffer() {"\_SB_.PCI2._CRS"})
+Warning  3046 -                                ^ Invalid or unknown escape sequence
+
+badcode.asl     41:     Name (ESC1, "abcdefg\x00hijklmn")
+Warning  3055 -                                ^ Invalid Hex/Octal Escape - Non-ASCII or NULL
+
+badcode.asl     49:         FLD1, 8
+Error    6030 -               ^ Access width of Field Unit extends beyond region limit
+
+badcode.asl     55:     Field (OPR2, DWordAcc, NoLock, Preserve)
+Error    6100 -                  ^ Host Operation Region requires ByteAcc access
+
+badcode.asl     60:     Field (OPR3, WordAcc, NoLock, Preserve)
+Error    6099 -                  ^ Host Operation Region requires BufferAcc access
+
+badcode.asl     67:     Method (MTH1, 0, NotSerialized, 32)
+Error    6125 -     SyncLevel must be in the range 0-15 ^ 
+
+badcode.asl     71:         Store (Arg3, Local0)
+Error    6006 -                      ^ Method argument is not initialized (Arg3)
+
+badcode.asl     71:         Store (Arg3, Local0)
+Remark   2087 -                      ^ Not a parameter, used as local only (Arg3)
+
+badcode.asl     72:         Store (Local1, Local2)
+Error    6066 -                        ^ Method local variable is not initialized (Local1)
+
+badcode.asl     76:         Subtract (MTX1, 4, Local3)
+Error    6058 -            Invalid type ^  ([Mutex|Reference] found, Subtract operator requires [Integer|String|Buffer])
+
+badcode.asl     80:         CreateField (BUF1, 0, Subtract (4, 4), FLD1)
+Error    6083 -                  Operand evaluates to zero ^ 
+
+badcode.asl     84:         Acquire (MTX1, 100)
+Warning  3130 -                             ^ Result is not used, possible operator timeout will be missed
+
+badcode.asl     85:         Wait (EVT1, 1)
+Warning  3130 -                        ^ Result is not used, possible operator timeout will be missed
+
+badcode.asl     89:         Add (INT1, 8)
+Error    6114 -                    ^ Result is not used, operator has no effect
+
+badcode.asl     94:         Store (5, INT1)
+Warning  3134 -                   ^ Statement is unreachable
+
+badcode.asl     97:     Method (MTH2)
+Remark   2119 -                   ^ Control Method marked Serialized (Due to use of Switch operator)
+
+badcode.asl     97:     Method (MTH2)
+Warning  3115 -                   ^ Not all control paths return a value (MTH2)
+
+badcode.asl    101:         Switch (ToInteger (INT1))
+Error    6078 -                            ^ No Case statements under Switch
+
+badcode.asl    120:         Store (MTH2 (), Local0)
+Warning  3122 -                      ^ Called method may not always return a value
+
+badcode.asl    126:     Method (MTH5) {Store (MTH4(), Local0)}
+Error    6080 -  Called method returns no value ^ 
+
+badcode.asl    132:         Name (_HID, "*PNP0C0A")     
+Error    6061 -        Invalid leading asterisk ^  (*PNP0C0A)
+
+badcode.asl    136:         Name (_HID, "PNP")          
+Error    6033 -                            ^ _HID string must be exactly 7 or 8 characters (PNP)
+
+badcode.asl    140:         Name (_HID, "MYDEVICE01")   
+Error    6033 -                                   ^ _HID string must be exactly 7 or 8 characters (MYDEVICE01)
+
+badcode.asl    144:         Name (_HID, "acpi0001")     
+Error    6034 -                                 ^ _HID prefix must be all uppercase or decimal digits (acpi0001)
+
+badcode.asl    148:         Name (_HID, "PNP-123")      
+Error    6002 -                                ^ String must be entirely alphanumeric (PNP-123)
+
+badcode.asl    152:         Name (_HID, "")             
+Error    6091 -                         ^ Invalid zero-length (null) string
+
+badcode.asl    153:         Name (_CID, "")             
+Error    6091 -                         ^ Invalid zero-length (null) string
+
+badcode.asl    158:     Name (_PRW, 4)
+Error    6105 -                    ^ Invalid object type for reserved name (_PRW: found Integer, Package required)
+
+badcode.asl    159:     Name (_FDI, Buffer () {0})
+Error    6105 -                            ^ Invalid object type for reserved name (_FDI: found Buffer, Package required)
+
+badcode.asl    164:     Method (_OSC, 5)
+Warning  3101 -                   ^ Reserved method has too many arguments (_OSC requires 4)
+
+badcode.asl    164:     Method (_OSC, 5)
+Warning  3107 -                   ^ Reserved method must return a value (Buffer required for _OSC)
+
+badcode.asl    170:     Name (_L01, 1)
+Error    6103 -                 ^ Reserved name must be a control method (with zero arguments)
+
+badcode.asl    171:     Name (_E02, 2)
+Error    6103 -                 ^ Reserved name must be a control method (with zero arguments)
+
+badcode.asl    172:     Name (_Q03, 3)
+Error    6103 -                 ^ Reserved name must be a control method (with zero arguments)
+
+badcode.asl    173:     Name (_ON,  0)
+Error    6103 -                ^ Reserved name must be a control method (with zero arguments)
+
+badcode.asl    174:     Name (_INI, 1)
+Error    6103 -                 ^ Reserved name must be a control method (with zero arguments)
+
+badcode.asl    175:     Name (_PTP, 2)
+Error    6103 -                 ^ Reserved name must be a control method (with arguments)
+
+badcode.asl    184:         Method (_E1D)
+Error    6032 -                       ^ Name conflicts with a previous GPE method (_L1D)
+
+badcode.asl    193:         Return (Buffer(1){0x33})
+Warning  3104 -                         ^ Reserved method should not return a value (_FDM)
+
+badcode.asl    197:         Return ("Unexpected Return Value")
+Warning  3104 -  Reserved method should not return a value ^  (_Q22)
+
+badcode.asl    205:         Method (_REG, 2)
+Warning  3079 -                       ^ _REG has no corresponding Operation Region
+
+badcode.asl    219:             StartDependentFn (0, 0)
+Error    6019 -                                  ^ Dependent function macros cannot be nested
+
+badcode.asl    225:     })
+Error    6070 -        ^ Missing EndDependentFn() macro in dependent resource list
+
+badcode.asl    242:             0x00002000,         
+Error    6049 -                         ^ Length is larger than Min/Max window
+
+badcode.asl    247:             0x00001001,         
+Error    6001 -                         ^ Must be a multiple of alignment/granularity value
+
+badcode.asl    248:             0x00002002,         
+Error    6001 -                         ^ Must be a multiple of alignment/granularity value
+
+badcode.asl    255:             0xFFFF,             
+Warning  3060 -                     ^ Maximum 10-bit ISA address (0x3FF)
+
+badcode.asl    264:             0x05                
+Error    6042 -                   ^ Invalid AccessSize (Maximum is 4 - QWord access)
+
+badcode.asl    268:         QWordSpace (0xB0, ResourceConsumer, PosDecode, MinFixed, MaxFixed, 0xA5,
+Error    6139 -     Constant out of range ^  (0xB0, allowable: 0xC0-0xFF)
+
+badcode.asl    279:             0x0200,             
+Error    6051 -                     ^ Address Min is greater than Address Max
+
+badcode.asl    291:             0x00001002,         
+Error    6049 -                         ^ Length is larger than Min/Max window
+
+badcode.asl    296:             0x00000010,
+Error    6048 -                         ^ Granularity must be zero or a power of two minus one
+
+badcode.asl    305:             0x0000000000000B02, 
+Error    6001 -                                 ^ Must be a multiple of alignment/granularity value
+
+badcode.asl    315:             0x00000000002FFFFE, 
+Error    6001 -                                 ^ Must be a multiple of alignment/granularity value (-1)
+
+badcode.asl    326:             0x00000000,         
+Error    6043 -                         ^ Invalid combination of Length and Min/Max fixed flags
+
+badcode.asl    335:             0x00000100,         
+Error    6043 -                         ^ Invalid combination of Length and Min/Max fixed flags
+
+badcode.asl    344:             0x00000200,         
+Error    6043 -                         ^ Invalid combination of Length and Min/Max fixed flags
+
+badcode.asl    349:             0x0000000F,         
+Error    6047 -                         ^ Granularity must be zero for fixed Min/Max
+
+badcode.asl    358:         DWordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
+Error    6090 -                                    ^ Min/Max/Length/Gran are all zero, but no resource tag
+
+badcode.asl    368:         EndDependentFn ()
+Error    6071 -                            ^ Missing StartDependentFn() macro in dependent resource list
+
+badcode.asl    388:         CreateWordField (RSC3, \DWI1._LEN, LEN)
+Warning  3128 -              ResourceTag larger than Field ^  (Size mismatch, Tag: 32 bits, Field: 16 bits)
+
+badcode.asl    389:         CreateByteField (RSC3, \DWI1._MIN, MIN)
+Warning  3128 -              ResourceTag larger than Field ^  (Size mismatch, Tag: 32 bits, Field: 8 bits)
+
+badcode.asl    390:         CreateBitField (RSC3, \DWI1._RNG, RNG1)
+Warning  3128 -             ResourceTag larger than Field ^  (Size mismatch, Tag: 2 bits, Field: 1 bit)
+
+badcode.asl    394:         CreateQWordField (RSC3, \DWI1._MAX, MAX)
+Warning  3129 -              ResourceTag smaller than Field ^  (Size mismatch, Tag: 32 bits, Field: 64 bits)
+
+badcode.asl    395:         CreateBitField (RSC3, \DWI1._GRA, GRA)
+Warning  3128 -             ResourceTag larger than Field ^  (Size mismatch, Tag: 32 bits, Field: 1 bit)
+
+badcode.asl    396:         CreateField (RSC3, \DWI1._MIF, 5, MIF)
+Warning  3129 -         ResourceTag smaller than Field ^  (Size mismatch, Tag: 1 bit, Field: 5 bits)
+
+badcode.asl    397:         CreateField (RSC3, \DWI1._RNG, 3, RNG2)
+Warning  3129 -         ResourceTag smaller than Field ^  (Size mismatch, Tag: 2 bits, Field: 3 bits)
+
+
+Intel ACPI Component Architecture
+ASL Optimizing Compiler version VVVVVVVV-YYYY [XXXXXXXXXXX]
+Copyright (c) 2000 - 2013 Intel Corporation
+
+Ignoring all errors, forcing AML file generation
+
+ASL Input:     badcode.asl - 401 lines, 6935 bytes, 79 keywords
+AML Output:    badcode.aml - 1184 bytes, 60 named objects, 19 executable opcodes
+
+Compilation complete. 46 Errors, 21 Warnings, 3 Remarks, 16 Optimizations
diff --git a/debian-big_endian.patch b/debian-big_endian.patch
new file mode 100644
index 0000000..78e4e90
--- /dev/null
+++ b/debian-big_endian.patch
@@ -0,0 +1,2490 @@
+Patch carried over from the prior iasl package and updated.  This allows
+for builds on big endian systems and cleans up endianness.  Please see
+http://lists.acpica.org/pipermail/devel/2010-July/000159.html.  Resolves
+BZ#865013 and BZ#856856.
+--
+
+Support compiling DSDT tables on big endian architectures.
+
+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>
+---
+ 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(-)
+
+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
+@@ -238,16 +238,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 */
+ 
+@@ -270,51 +266,52 @@
+ 
+         /* Special opcodes for within a field definition */
+ 
+-        Aml.Opcode = AML_FIELD_OFFSET_OP;
++        AmlOpcode = AML_FIELD_OFFSET_OP;
+         break;
+ 
+     case AML_INT_ACCESSFIELD_OP:
+ 
+-        Aml.Opcode = AML_FIELD_ACCESS_OP;
++        AmlOpcode = AML_FIELD_ACCESS_OP;
+         break;
+ 
+     case AML_INT_CONNECTION_OP:
+ 
+-        Aml.Opcode = AML_FIELD_CONNECTION_OP;
++        AmlOpcode = AML_FIELD_CONNECTION_OP;
+         break;
+ 
+     default:
+ 
+-        Aml.Opcode = Op->Asl.AmlOpcode;
++        AmlOpcode = Op->Asl.AmlOpcode;
+         break;
+     }
+ 
+ 
+-    switch (Aml.Opcode)
++    switch (AmlOpcode)
+     {
+     case AML_PACKAGE_LENGTH:
+ 
+         /* Value is the length to be encoded (Used in field definitions) */
+ 
+-        PkgLen.Len = (UINT32) Op->Asl.Value.Integer;
++        PkgLen = (UINT32) Op->Asl.Value.Integer;
+         break;
+ 
+     default:
+ 
+         /* Check for two-byte opcode */
+ 
+-        if (Aml.Opcode > 0x00FF)
++        if (AmlOpcode > 0x00FF)
+         {
+             /* Write the high byte first */
+-
+-            CgLocalWriteAmlData (Op, &Aml.OpcodeBytes[1], 1);
++	    Byte = ACPI_HIBYTE(AmlOpcode);
++	    CgLocalWriteAmlData (Op, &Byte, 1);
+         }
+ 
+-        CgLocalWriteAmlData (Op, &Aml.OpcodeBytes[0], 1);
++	Byte = ACPI_LOBYTE(AmlOpcode);
++        CgLocalWriteAmlData (Op, &Byte, 1);
+ 
+         /* Subtreelength doesn't include length of package length bytes */
+ 
+-        PkgLen.Len = Op->Asl.AmlSubtreeLength + Op->Asl.AmlPkgLenBytes;
++        PkgLen = Op->Asl.AmlSubtreeLength + Op->Asl.AmlPkgLenBytes;
+         break;
+     }
+ 
+@@ -325,8 +321,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)
+         {
+@@ -336,7 +332,7 @@ CgWriteAmlOpcode (
+              */
+             PkgLenFirstByte = (UINT8)
+                 (((UINT32) (Op->Asl.AmlPkgLenBytes - 1) << 6) |
+-                (PkgLen.LenBytes[0] & 0x0F));
++                (PkgLen & 0x0F));
+ 
+             CgLocalWriteAmlData (Op, &PkgLenFirstByte, 1);
+ 
+@@ -344,37 +340,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:
+@@ -408,6 +409,7 @@ CgWriteTableHeader (
+     ACPI_PARSE_OBJECT       *Op)
+ {
+     ACPI_PARSE_OBJECT       *Child;
++    UINT32 DWord;
+ 
+ 
+     /* AML filename */
+@@ -444,7 +446,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 */
+ 
+@@ -452,11 +453,12 @@ CgWriteTableHeader (
+ 
+     /* Compiler version */
+ 
+-    TableHeader.AslCompilerRevision = ASL_REVISION;
++    DWord = ASL_REVISION;
++    ACPI_MOVE_32_TO_32(&TableHeader.AslCompilerRevision, &DWord);
+ 
+     /* Table length. Checksum zero for now, will rewrite later */
+ 
+-    TableHeader.Length   = Gbl_TableLength;
++    ACPI_MOVE_32_TO_32(&TableHeader.Length, &Gbl_TableLength);
+     TableHeader.Checksum = 0;
+ 
+     CgLocalWriteAmlData (Op, &TableHeader, sizeof (ACPI_TABLE_HEADER));
+@@ -520,7 +523,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 */
+@@ -538,13 +544,24 @@ CgWriteNode (
+     switch (Op->Asl.AmlOpcode)
+     {
+     case AML_RAW_DATA_BYTE:
++        Byte = (UINT8) Op->Asl.Value.Integer;
++        CgLocalWriteAmlData (Op, &Byte, 1);
++        return;
++
+     case AML_RAW_DATA_WORD:
+-    case AML_RAW_DATA_DWORD:
+-    case AML_RAW_DATA_QWORD:
++        ACPI_MOVE_64_TO_16(&Word, &Op->Asl.Value.Integer);
++        CgLocalWriteAmlData (Op, &Word, 2);
++        return;
+ 
+-        CgLocalWriteAmlData (Op, &Op->Asl.Value.Integer, Op->Asl.AmlLength);
++    case AML_RAW_DATA_DWORD:
++        ACPI_MOVE_64_TO_32(&DWord, &Op->Asl.Value.Integer);
++        CgLocalWriteAmlData (Op, &DWord, 4);
+         return;
+ 
++    case AML_RAW_DATA_QWORD:
++        ACPI_MOVE_64_TO_64(&QWord, &Op->Asl.Value.Integer);
++        CgLocalWriteAmlData (Op, &QWord, 8);
++        return;
+ 
+     case AML_RAW_DATA_BUFFER:
+ 
+diff --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
+@@ -476,6 +475,7 @@ OpcDoUnicode (
+     UINT32                  i;
+     UINT8                   *AsciiString;
+     UINT16                  *UnicodeString;
++    UINT16                  UChar;
+     ACPI_PARSE_OBJECT       *BufferLengthOp;
+ 
+ 
+@@ -502,7 +502,8 @@ OpcDoUnicode (
+ 
+     for (i = 0; i < Count; i++)
+     {
+-        UnicodeString[i] = (UINT16) AsciiString[i];
++        UChar = (UINT16) AsciiString[i];
++        ACPI_MOVE_16_TO_16(&UnicodeString[i], &UChar);
+     }
+ 
+     /*
+diff --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
+@@ -152,6 +152,11 @@ RsDoMemory24Descriptor (
+     ACPI_PARSE_OBJECT       *MaxOp = NULL;
+     ACPI_PARSE_OBJECT       *LengthOp = NULL;
+     ASL_RESOURCE_NODE       *Rnode;
++    UINT16                  Minimum = 0;
++    UINT16                  Maximum = 0;
++    UINT16                  AddressLength = 0;
++    UINT16                  Alignment = 0;
++    UINT16                  ResourceLength;
+     UINT32                  i;
+ 
+ 
+@@ -160,7 +165,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 */
+ 
+@@ -177,7 +183,7 @@ RsDoMemory24Descriptor (
+ 
+         case 1: /* Min Address */
+ 
+-            Descriptor->Memory24.Minimum = (UINT16) InitializerOp->Asl.Value.Integer;
++            Minimum = (UINT16) InitializerOp->Asl.Value.Integer;
+             RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.Minimum));
+             MinOp = InitializerOp;
+@@ -185,7 +191,7 @@ RsDoMemory24Descriptor (
+ 
+         case 2: /* Max Address */
+ 
+-            Descriptor->Memory24.Maximum = (UINT16) InitializerOp->Asl.Value.Integer;
++            Maximum = (UINT16) InitializerOp->Asl.Value.Integer;
+             RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.Maximum));
+             MaxOp = InitializerOp;
+@@ -193,14 +199,14 @@ RsDoMemory24Descriptor (
+ 
+         case 3: /* Alignment */
+ 
+-            Descriptor->Memory24.Alignment = (UINT16) InitializerOp->Asl.Value.Integer;
++            Alignment = (UINT16) InitializerOp->Asl.Value.Integer;
+             RsCreateWordField (InitializerOp, ACPI_RESTAG_ALIGNMENT,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.Alignment));
+             break;
+ 
+         case 4: /* Length */
+ 
+-            Descriptor->Memory24.AddressLength = (UINT16) InitializerOp->Asl.Value.Integer;
++            AddressLength = (UINT16) InitializerOp->Asl.Value.Integer;
+             RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.AddressLength));
+             LengthOp = InitializerOp;
+@@ -223,12 +229,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, 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);
+ }
+ 
+@@ -259,6 +270,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;
+ 
+ 
+@@ -267,7 +283,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 */
+ 
+@@ -284,7 +301,7 @@ RsDoMemory32Descriptor (
+ 
+         case 1:  /* Min Address */
+ 
+-            Descriptor->Memory32.Minimum = (UINT32) InitializerOp->Asl.Value.Integer;
++            Minimum = (UINT32) InitializerOp->Asl.Value.Integer;
+             RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.Minimum));
+             MinOp = InitializerOp;
+@@ -292,7 +309,7 @@ RsDoMemory32Descriptor (
+ 
+         case 2: /* Max Address */
+ 
+-            Descriptor->Memory32.Maximum = (UINT32) InitializerOp->Asl.Value.Integer;
++            Maximum = (UINT32) InitializerOp->Asl.Value.Integer;
+             RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.Maximum));
+             MaxOp = InitializerOp;
+@@ -300,7 +317,7 @@ RsDoMemory32Descriptor (
+ 
+         case 3: /* Alignment */
+ 
+-            Descriptor->Memory32.Alignment = (UINT32) InitializerOp->Asl.Value.Integer;
++            Alignment = (UINT32) InitializerOp->Asl.Value.Integer;
+             RsCreateDwordField (InitializerOp, ACPI_RESTAG_ALIGNMENT,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.Alignment));
+             AlignOp = InitializerOp;
+@@ -308,7 +325,7 @@ RsDoMemory32Descriptor (
+ 
+         case 4: /* Length */
+ 
+-            Descriptor->Memory32.AddressLength = (UINT32) InitializerOp->Asl.Value.Integer;
++            AddressLength = (UINT32) InitializerOp->Asl.Value.Integer;
+             RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.AddressLength));
+             LengthOp = InitializerOp;
+@@ -331,12 +348,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, 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);
+ }
+ 
+@@ -363,6 +385,7 @@ RsDoMemory32FixedDescriptor (
+     AML_RESOURCE            *Descriptor;
+     ACPI_PARSE_OBJECT       *InitializerOp;
+     ASL_RESOURCE_NODE       *Rnode;
++    UINT16                  ResourceLength;
+     UINT32                  i;
+ 
+ 
+@@ -371,7 +394,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 */
+ 
+@@ -388,14 +412,16 @@ RsDoMemory32FixedDescriptor (
+ 
+         case 1: /* Address */
+ 
+-            Descriptor->FixedMemory32.Address = (UINT32) InitializerOp->Asl.Value.Integer;
++            ACPI_MOVE_64_TO_32(&Descriptor->FixedMemory32.Address,
++                &InitializerOp->Asl.Value.Integer);
+             RsCreateDwordField (InitializerOp, ACPI_RESTAG_BASEADDRESS,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (FixedMemory32.Address));
+             break;
+ 
+         case 2: /* Length */
+ 
+-            Descriptor->FixedMemory32.AddressLength = (UINT32) InitializerOp->Asl.Value.Integer;
++            ACPI_MOVE_64_TO_32(&Descriptor->FixedMemory32.AddressLength,
++                &InitializerOp->Asl.Value.Integer);
+             RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (FixedMemory32.AddressLength));
+             break;
+diff --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
+@@ -202,6 +202,8 @@ RsDoFixedDmaDescriptor (
+     AML_RESOURCE            *Descriptor;
+     ACPI_PARSE_OBJECT       *InitializerOp;
+     ASL_RESOURCE_NODE       *Rnode;
++    UINT16                  RequestLines = 0;
++    UINT16                  Channels = 0;
+     UINT32                  i;
+ 
+ 
+@@ -220,14 +222,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;
+@@ -252,6 +253,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);
+ }
+ 
+@@ -279,6 +283,7 @@ RsDoFixedIoDescriptor (
+     ACPI_PARSE_OBJECT       *InitializerOp;
+     ACPI_PARSE_OBJECT       *AddressOp = NULL;
+     ASL_RESOURCE_NODE       *Rnode;
++    UINT16                  Address = 0;
+     UINT32                  i;
+ 
+ 
+@@ -297,8 +302,7 @@ RsDoFixedIoDescriptor (
+         {
+         case 0: /* Base Address */
+ 
+-            Descriptor->FixedIo.Address =
+-                (UINT16) InitializerOp->Asl.Value.Integer;
++            Address = (UINT16) InitializerOp->Asl.Value.Integer;
+             RsCreateWordField (InitializerOp, ACPI_RESTAG_BASEADDRESS,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (FixedIo.Address));
+             AddressOp = InitializerOp;
+@@ -328,11 +332,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);
+ }
+ 
+@@ -363,6 +369,8 @@ RsDoIoDescriptor (
+     ACPI_PARSE_OBJECT       *LengthOp = NULL;
+     ACPI_PARSE_OBJECT       *AlignOp = NULL;
+     ASL_RESOURCE_NODE       *Rnode;
++    UINT16                  Minimum = 0;
++    UINT16                  Maximum = 0;
+     UINT32                  i;
+ 
+ 
+@@ -388,8 +396,7 @@ RsDoIoDescriptor (
+ 
+         case 1:  /* Min Address */
+ 
+-            Descriptor->Io.Minimum =
+-                (UINT16) InitializerOp->Asl.Value.Integer;
++            Minimum = (UINT16) InitializerOp->Asl.Value.Integer;
+             RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Io.Minimum));
+             MinOp = InitializerOp;
+@@ -397,8 +404,7 @@ RsDoIoDescriptor (
+ 
+         case 2: /* Max Address */
+ 
+-            Descriptor->Io.Maximum =
+-                (UINT16) InitializerOp->Asl.Value.Integer;
++            Maximum = (UINT16) InitializerOp->Asl.Value.Integer;
+             RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Io.Maximum));
+             MaxOp = InitializerOp;
+@@ -439,12 +445,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, Op);
+ 
++    ACPI_MOVE_16_TO_16(&Descriptor->Io.Minimum, &Minimum);
++    ACPI_MOVE_16_TO_16(&Descriptor->Io.Maximum, &Maximum);
++
+     return (Rnode);
+ }
+ 
+@@ -565,9 +574,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);
+ }
+ 
+@@ -667,6 +676,6 @@ RsDoIrqNoFlagsDescriptor (
+ 
+     /* Now we can set the interrupt mask */
+ 
+-    Descriptor->Irq.IrqMask = IrqMask;
++    ACPI_MOVE_16_TO_16(&Descriptor->Irq.IrqMask, &IrqMask);
+     return (Rnode);
+ }
+diff --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
+@@ -79,6 +79,7 @@ RsDoGeneralRegisterDescriptor (
+     AML_RESOURCE            *Descriptor;
+     ACPI_PARSE_OBJECT       *InitializerOp;
+     ASL_RESOURCE_NODE       *Rnode;
++    UINT16                  ResourceLength;
+     UINT32                  i;
+ 
+ 
+@@ -87,7 +88,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 */
+ 
+@@ -118,7 +121,8 @@ RsDoGeneralRegisterDescriptor (
+ 
+         case 3: /* Register Address */
+ 
+-            Descriptor->GenericReg.Address = InitializerOp->Asl.Value.Integer;
++	    ACPI_MOVE_64_TO_64(&Descriptor->GenericReg.Address,
++			    &InitializerOp->Asl.Value.Integer);
+             RsCreateQwordField (InitializerOp, ACPI_RESTAG_ADDRESS,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (GenericReg.Address));
+             break;
+@@ -176,6 +180,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;
+@@ -222,7 +227,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,
+@@ -330,10 +335,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 */
+ 
+@@ -369,7 +376,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 */
+@@ -381,13 +387,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);
+ }
+ 
+@@ -438,7 +445,7 @@ RsDoVendorLargeDescriptor (
+ 
+     Descriptor = Rnode->Buffer;
+     Descriptor->VendorLarge.DescriptorType  = ACPI_RESOURCE_NAME_VENDOR_LARGE;
+-    Descriptor->VendorLarge.ResourceLength = (UINT16) i;
++    ACPI_MOVE_32_TO_16(&Descriptor->VendorLarge.ResourceLength, &i);
+ 
+     /* Point to end-of-descriptor for vendor data */
+ 
+diff --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
+@@ -83,7 +83,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;
+@@ -104,8 +110,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 */
+@@ -149,8 +154,7 @@ RsDoDwordIoDescriptor (
+ 
+         case 5: /* Address Granularity */
+ 
+-            Descriptor->Address32.Granularity =
+-                (UINT32) InitializerOp->Asl.Value.Integer;
++            Granularity = (UINT32) InitializerOp->Asl.Value.Integer;
+             RsCreateDwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Granularity));
+             GranOp = InitializerOp;
+@@ -158,8 +162,7 @@ RsDoDwordIoDescriptor (
+ 
+         case 6: /* Address Min */
+ 
+-            Descriptor->Address32.Minimum =
+-                (UINT32) InitializerOp->Asl.Value.Integer;
++            Minimum = (UINT32) InitializerOp->Asl.Value.Integer;
+             RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Minimum));
+             MinOp = InitializerOp;
+@@ -167,8 +170,7 @@ RsDoDwordIoDescriptor (
+ 
+         case 7: /* Address Max */
+ 
+-            Descriptor->Address32.Maximum =
+-                (UINT32) InitializerOp->Asl.Value.Integer;
++            Maximum = (UINT32) InitializerOp->Asl.Value.Integer;
+             RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Maximum));
+             MaxOp = InitializerOp;
+@@ -176,16 +178,14 @@ RsDoDwordIoDescriptor (
+ 
+         case 8: /* Translation Offset */
+ 
+-            Descriptor->Address32.TranslationOffset =
+-                (UINT32) InitializerOp->Asl.Value.Integer;
++            TranslationOffset = (UINT32) InitializerOp->Asl.Value.Integer;
+             RsCreateDwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.TranslationOffset));
+             break;
+ 
+         case 9: /* Address Length */
+ 
+-            Descriptor->Address32.AddressLength =
+-                (UINT32) InitializerOp->Asl.Value.Integer;
++            AddressLength = (UINT32) InitializerOp->Asl.Value.Integer;
+             RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.AddressLength));
+             LengthOp = InitializerOp;
+@@ -199,7 +199,7 @@ RsDoDwordIoDescriptor (
+ 
+                 OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer;
+                 OptionIndex++;
+-                Descriptor->Address32.ResourceLength++;
++                ResourceLength++;
+                 ResSourceIndex = TRUE;
+             }
+             break;
+@@ -213,8 +213,7 @@ RsDoDwordIoDescriptor (
+                 {
+                     /* Found a valid ResourceSource */
+ 
+-                    Descriptor->Address32.ResourceLength = (UINT16)
+-                        (Descriptor->Address32.ResourceLength + StringLength);
++                    ResourceLength = (UINT16) (ResourceLength + StringLength);
+ 
+                     strcpy ((char *)
+                         &OptionalFields[OptionIndex],
+@@ -274,13 +273,20 @@ RsDoDwordIoDescriptor (
+     /* Validate the Min/Max/Len/Gran values */
+ 
+     RsLargeAddressCheck (
+-        (UINT64) Descriptor->Address32.Minimum,
+-        (UINT64) Descriptor->Address32.Maximum,
+-        (UINT64) Descriptor->Address32.AddressLength,
+-        (UINT64) Descriptor->Address32.Granularity,
++        Minimum,
++        Maximum,
++        AddressLength,
++        Granularity,
+         Descriptor->Address32.Flags,
+         MinOp, MaxOp, LengthOp, GranOp, 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);
+@@ -315,7 +321,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;
+ 
+@@ -335,11 +347,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++)
+@@ -388,8 +398,7 @@ RsDoDwordMemoryDescriptor (
+ 
+         case 6: /* Address Granularity */
+ 
+-            Descriptor->Address32.Granularity =
+-                (UINT32) InitializerOp->Asl.Value.Integer;
++            Granularity = (UINT32) InitializerOp->Asl.Value.Integer;
+             RsCreateDwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Granularity));
+             GranOp = InitializerOp;
+@@ -397,8 +406,7 @@ RsDoDwordMemoryDescriptor (
+ 
+         case 7: /* Min Address */
+ 
+-            Descriptor->Address32.Minimum =
+-                (UINT32) InitializerOp->Asl.Value.Integer;
++            Minimum = (UINT32) InitializerOp->Asl.Value.Integer;
+             RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Minimum));
+             MinOp = InitializerOp;
+@@ -406,8 +414,7 @@ RsDoDwordMemoryDescriptor (
+ 
+         case 8: /* Max Address */
+ 
+-            Descriptor->Address32.Maximum =
+-                (UINT32) InitializerOp->Asl.Value.Integer;
++            Maximum = (UINT32) InitializerOp->Asl.Value.Integer;
+             RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Maximum));
+             MaxOp = InitializerOp;
+@@ -415,16 +422,14 @@ RsDoDwordMemoryDescriptor (
+ 
+         case 9: /* Translation Offset */
+ 
+-            Descriptor->Address32.TranslationOffset =
+-                (UINT32) InitializerOp->Asl.Value.Integer;
++            TranslationOffset = (UINT32) InitializerOp->Asl.Value.Integer;
+             RsCreateDwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.TranslationOffset));
+             break;
+ 
+         case 10: /* Address Length */
+ 
+-            Descriptor->Address32.AddressLength =
+-                (UINT32) InitializerOp->Asl.Value.Integer;
++            AddressLength = (UINT32) InitializerOp->Asl.Value.Integer;
+             RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.AddressLength));
+             LengthOp = InitializerOp;
+@@ -436,7 +441,7 @@ RsDoDwordMemoryDescriptor (
+             {
+                 OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer;
+                 OptionIndex++;
+-                Descriptor->Address32.ResourceLength++;
++                ResourceLength++;
+                 ResSourceIndex = TRUE;
+             }
+             break;
+@@ -448,8 +453,8 @@ RsDoDwordMemoryDescriptor (
+             {
+                 if (StringLength)
+                 {
+-                    Descriptor->Address32.ResourceLength = (UINT16)
+-                        (Descriptor->Address32.ResourceLength + StringLength);
++
++                    ResourceLength = (UINT16) (ResourceLength + StringLength);
+ 
+                     strcpy ((char *)
+                         &OptionalFields[OptionIndex],
+@@ -510,13 +515,20 @@ RsDoDwordMemoryDescriptor (
+     /* Validate the Min/Max/Len/Gran values */
+ 
+     RsLargeAddressCheck (
+-        (UINT64) Descriptor->Address32.Minimum,
+-        (UINT64) Descriptor->Address32.Maximum,
+-        (UINT64) Descriptor->Address32.AddressLength,
+-        (UINT64) Descriptor->Address32.Granularity,
++        Minimum,
++        Maximum,
++        AddressLength,
++        Granularity,
+         Descriptor->Address32.Flags,
+         MinOp, MaxOp, LengthOp, GranOp, 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);
+@@ -551,7 +563,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;
+ 
+@@ -570,8 +588,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 */
+@@ -620,8 +637,7 @@ RsDoDwordSpaceDescriptor (
+ 
+         case 6: /* Address Granularity */
+ 
+-            Descriptor->Address32.Granularity =
+-                (UINT32) InitializerOp->Asl.Value.Integer;
++            Granularity = (UINT32) InitializerOp->Asl.Value.Integer;
+             RsCreateDwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Granularity));
+             GranOp = InitializerOp;
+@@ -629,8 +645,7 @@ RsDoDwordSpaceDescriptor (
+ 
+         case 7: /* Min Address */
+ 
+-            Descriptor->Address32.Minimum =
+-                (UINT32) InitializerOp->Asl.Value.Integer;
++            Minimum = (UINT32) InitializerOp->Asl.Value.Integer;
+             RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Minimum));
+             MinOp = InitializerOp;
+@@ -638,8 +651,7 @@ RsDoDwordSpaceDescriptor (
+ 
+         case 8: /* Max Address */
+ 
+-            Descriptor->Address32.Maximum =
+-                (UINT32) InitializerOp->Asl.Value.Integer;
++            Maximum = (UINT32) InitializerOp->Asl.Value.Integer;
+             RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Maximum));
+             MaxOp = InitializerOp;
+@@ -647,16 +661,14 @@ RsDoDwordSpaceDescriptor (
+ 
+         case 9: /* Translation Offset */
+ 
+-            Descriptor->Address32.TranslationOffset =
+-                (UINT32) InitializerOp->Asl.Value.Integer;
++            TranslationOffset = (UINT32) InitializerOp->Asl.Value.Integer;
+             RsCreateDwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.TranslationOffset));
+             break;
+ 
+         case 10: /* Address Length */
+ 
+-            Descriptor->Address32.AddressLength =
+-                (UINT32) InitializerOp->Asl.Value.Integer;
++            AddressLength = (UINT32) InitializerOp->Asl.Value.Integer;
+             RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.AddressLength));
+             LengthOp = InitializerOp;
+@@ -668,7 +680,7 @@ RsDoDwordSpaceDescriptor (
+             {
+                 OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer;
+                 OptionIndex++;
+-                Descriptor->Address32.ResourceLength++;
++                ResourceLength++;
+                 ResSourceIndex = TRUE;
+             }
+             break;
+@@ -680,8 +692,7 @@ RsDoDwordSpaceDescriptor (
+             {
+                 if (StringLength)
+                 {
+-                    Descriptor->Address32.ResourceLength = (UINT16)
+-                        (Descriptor->Address32.ResourceLength + StringLength);
++                    ResourceLength = (UINT16) (ResourceLength + StringLength);
+ 
+                     strcpy ((char *)
+                         &OptionalFields[OptionIndex],
+@@ -728,13 +739,20 @@ RsDoDwordSpaceDescriptor (
+     /* Validate the Min/Max/Len/Gran values */
+ 
+     RsLargeAddressCheck (
+-        (UINT64) Descriptor->Address32.Minimum,
+-        (UINT64) Descriptor->Address32.Maximum,
+-        (UINT64) Descriptor->Address32.AddressLength,
+-        (UINT64) Descriptor->Address32.Granularity,
++        Minimum,
++        Maximum,
++        AddressLength,
++        Granularity,
+         Descriptor->Address32.Flags,
+         MinOp, MaxOp, LengthOp, GranOp, 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);
+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
+@@ -82,6 +82,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;
+ 
+ 
+@@ -96,9 +103,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 */
+ 
+@@ -141,7 +149,7 @@ RsDoExtendedIoDescriptor (
+ 
+         case 5: /* Address Granularity */
+ 
+-            Descriptor->ExtAddress64.Granularity = InitializerOp->Asl.Value.Integer;
++            Granularity = InitializerOp->Asl.Value.Integer;
+             RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Granularity));
+             GranOp = InitializerOp;
+@@ -149,7 +157,7 @@ RsDoExtendedIoDescriptor (
+ 
+         case 6: /* Address Min */
+ 
+-            Descriptor->ExtAddress64.Minimum = InitializerOp->Asl.Value.Integer;
++            Minimum = InitializerOp->Asl.Value.Integer;
+             RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Minimum));
+             MinOp = InitializerOp;
+@@ -157,7 +165,7 @@ RsDoExtendedIoDescriptor (
+ 
+         case 7: /* Address Max */
+ 
+-            Descriptor->ExtAddress64.Maximum = InitializerOp->Asl.Value.Integer;
++            Maximum = InitializerOp->Asl.Value.Integer;
+             RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Maximum));
+             MaxOp = InitializerOp;
+@@ -165,14 +173,14 @@ RsDoExtendedIoDescriptor (
+ 
+         case 8: /* Translation Offset */
+ 
+-            Descriptor->ExtAddress64.TranslationOffset = InitializerOp->Asl.Value.Integer;
++            TranslationOffset = InitializerOp->Asl.Value.Integer;
+             RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TranslationOffset));
+             break;
+ 
+         case 9: /* Address Length */
+ 
+-            Descriptor->ExtAddress64.AddressLength = InitializerOp->Asl.Value.Integer;
++            AddressLength = InitializerOp->Asl.Value.Integer;
+             RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.AddressLength));
+             LengthOp = InitializerOp;
+@@ -180,7 +188,7 @@ RsDoExtendedIoDescriptor (
+ 
+         case 10: /* Type-Specific Attributes */
+ 
+-            Descriptor->ExtAddress64.TypeSpecific = InitializerOp->Asl.Value.Integer;
++            TypeSpecific = InitializerOp->Asl.Value.Integer;
+             RsCreateQwordField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TypeSpecific));
+             break;
+@@ -216,13 +224,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, 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);
+ }
+@@ -255,6 +270,13 @@ RsDoExtendedMemoryDescriptor (
+     ACPI_PARSE_OBJECT       *GranOp = NULL;
+     ASL_RESOURCE_NODE       *Rnode;
+     UINT16                  StringLength = 0;
++    UINT16                  ResourceLength = 0;
++    UINT64                  Minimum = 0;
++    UINT64                  Maximum = 0;
++    UINT64                  AddressLength = 0;
++    UINT64                  Granularity = 0;
++    UINT64                  TranslationOffset = 0;
++    UINT64                  TypeSpecific = 0;
+     UINT32                  i;
+ 
+ 
+@@ -269,9 +291,10 @@ RsDoExtendedMemoryDescriptor (
+     Descriptor->ExtAddress64.ResourceType    = ACPI_ADDRESS_TYPE_MEMORY_RANGE;
+     Descriptor->ExtAddress64.RevisionID      = AML_RESOURCE_EXTENDED_ADDRESS_REVISION;
+ 
+-    Descriptor->ExtAddress64.ResourceLength  = (UINT16)
+-        (sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) -
++    ResourceLength  = (UINT16) (sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) -
+          sizeof (AML_RESOURCE_LARGE_HEADER));
++    ACPI_MOVE_16_TO_16(&Descriptor->ExtAddress64.ResourceLength,
++        &ResourceLength);
+ 
+     /* Process all child initialization nodes */
+ 
+@@ -321,7 +344,7 @@ RsDoExtendedMemoryDescriptor (
+ 
+         case 6: /* Address Granularity */
+ 
+-            Descriptor->ExtAddress64.Granularity = InitializerOp->Asl.Value.Integer;
++            Granularity = InitializerOp->Asl.Value.Integer;
+             RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Granularity));
+             GranOp = InitializerOp;
+@@ -329,7 +352,7 @@ RsDoExtendedMemoryDescriptor (
+ 
+         case 7: /* Min Address */
+ 
+-            Descriptor->ExtAddress64.Minimum = InitializerOp->Asl.Value.Integer;
++            Minimum = InitializerOp->Asl.Value.Integer;
+             RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Minimum));
+             MinOp = InitializerOp;
+@@ -337,7 +360,7 @@ RsDoExtendedMemoryDescriptor (
+ 
+         case 8: /* Max Address */
+ 
+-            Descriptor->ExtAddress64.Maximum = InitializerOp->Asl.Value.Integer;
++            Maximum = InitializerOp->Asl.Value.Integer;
+             RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Maximum));
+             MaxOp = InitializerOp;
+@@ -345,14 +368,14 @@ RsDoExtendedMemoryDescriptor (
+ 
+         case 9: /* Translation Offset */
+ 
+-            Descriptor->ExtAddress64.TranslationOffset = InitializerOp->Asl.Value.Integer;
++            TranslationOffset = InitializerOp->Asl.Value.Integer;
+             RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TranslationOffset));
+             break;
+ 
+         case 10: /* Address Length */
+ 
+-            Descriptor->ExtAddress64.AddressLength = InitializerOp->Asl.Value.Integer;
++            AddressLength = InitializerOp->Asl.Value.Integer;
+             RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.AddressLength));
+             LengthOp = InitializerOp;
+@@ -360,7 +383,7 @@ RsDoExtendedMemoryDescriptor (
+ 
+         case 11: /* Type-Specific Attributes */
+ 
+-            Descriptor->ExtAddress64.TypeSpecific = InitializerOp->Asl.Value.Integer;
++            TypeSpecific = InitializerOp->Asl.Value.Integer;
+             RsCreateQwordField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TypeSpecific));
+             break;
+@@ -397,13 +420,20 @@ RsDoExtendedMemoryDescriptor (
+     /* Validate the Min/Max/Len/Gran values */
+ 
+     RsLargeAddressCheck (
+-        Descriptor->ExtAddress64.Minimum,
+-        Descriptor->ExtAddress64.Maximum,
+-        Descriptor->ExtAddress64.AddressLength,
+-        Descriptor->ExtAddress64.Granularity,
++        Minimum,
++        Maximum,
++        AddressLength,
++        Granularity,
+         Descriptor->ExtAddress64.Flags,
+         MinOp, MaxOp, LengthOp, GranOp, Op);
+ 
++    ACPI_MOVE_64_TO_64(&Descriptor->ExtAddress64.Minimum, &Minimum);
++    ACPI_MOVE_64_TO_64(&Descriptor->ExtAddress64.Maximum, &Maximum);
++    ACPI_MOVE_64_TO_64(&Descriptor->ExtAddress64.AddressLength, &AddressLength);
++    ACPI_MOVE_64_TO_64(&Descriptor->ExtAddress64.Granularity, &Granularity);
++    ACPI_MOVE_64_TO_64(&Descriptor->ExtAddress64.TranslationOffset, &TranslationOffset);
++    ACPI_MOVE_64_TO_64(&Descriptor->ExtAddress64.TypeSpecific, &TypeSpecific);
++
+     Rnode->BufferLength = sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) + StringLength;
+     return (Rnode);
+ }
+@@ -436,6 +466,13 @@ RsDoExtendedSpaceDescriptor (
+     ACPI_PARSE_OBJECT       *GranOp = NULL;
+     ASL_RESOURCE_NODE       *Rnode;
+     UINT16                  StringLength = 0;
++    UINT16                  ResourceLength = 0;
++    UINT64                  Minimum = 0;
++    UINT64                  Maximum = 0;
++    UINT64                  AddressLength = 0;
++    UINT64                  Granularity = 0;
++    UINT64                  TranslationOffset = 0;
++    UINT64                  TypeSpecific = 0;
+     UINT32                  i;
+ 
+ 
+@@ -449,9 +486,10 @@ RsDoExtendedSpaceDescriptor (
+     Descriptor->ExtAddress64.DescriptorType  = ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64;
+     Descriptor->ExtAddress64.RevisionID      = AML_RESOURCE_EXTENDED_ADDRESS_REVISION;
+ 
+-    Descriptor->ExtAddress64.ResourceLength  = (UINT16)
+-        (sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) -
++    ResourceLength  = (UINT16) (sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) -
+          sizeof (AML_RESOURCE_LARGE_HEADER));
++    ACPI_MOVE_16_TO_16(&Descriptor->ExtAddress64.ResourceLength,
++        &ResourceLength);
+ 
+     /* Process all child initialization nodes */
+ 
+@@ -499,7 +537,7 @@ RsDoExtendedSpaceDescriptor (
+ 
+         case 6: /* Address Granularity */
+ 
+-            Descriptor->ExtAddress64.Granularity = InitializerOp->Asl.Value.Integer;
++            Granularity = InitializerOp->Asl.Value.Integer;
+             RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Granularity));
+             GranOp = InitializerOp;
+@@ -507,7 +545,7 @@ RsDoExtendedSpaceDescriptor (
+ 
+         case 7: /* Min Address */
+ 
+-            Descriptor->ExtAddress64.Minimum = InitializerOp->Asl.Value.Integer;
++            Minimum = InitializerOp->Asl.Value.Integer;
+             RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Minimum));
+             MinOp = InitializerOp;
+@@ -515,7 +553,7 @@ RsDoExtendedSpaceDescriptor (
+ 
+         case 8: /* Max Address */
+ 
+-            Descriptor->ExtAddress64.Maximum = InitializerOp->Asl.Value.Integer;
++            Maximum = InitializerOp->Asl.Value.Integer;
+             RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Maximum));
+             MaxOp = InitializerOp;
+@@ -523,14 +561,14 @@ RsDoExtendedSpaceDescriptor (
+ 
+         case 9: /* Translation Offset */
+ 
+-            Descriptor->ExtAddress64.TranslationOffset = InitializerOp->Asl.Value.Integer;
++            TranslationOffset = InitializerOp->Asl.Value.Integer;
+             RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TranslationOffset));
+             break;
+ 
+         case 10: /* Address Length */
+ 
+-            Descriptor->ExtAddress64.AddressLength = InitializerOp->Asl.Value.Integer;
++            AddressLength = InitializerOp->Asl.Value.Integer;
+             RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.AddressLength));
+             LengthOp = InitializerOp;
+@@ -538,7 +576,7 @@ RsDoExtendedSpaceDescriptor (
+ 
+         case 11: /* Type-Specific Attributes */
+ 
+-            Descriptor->ExtAddress64.TypeSpecific = InitializerOp->Asl.Value.Integer;
++            TypeSpecific = InitializerOp->Asl.Value.Integer;
+             RsCreateQwordField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TypeSpecific));
+             break;
+@@ -560,13 +598,20 @@ RsDoExtendedSpaceDescriptor (
+     /* Validate the Min/Max/Len/Gran values */
+ 
+     RsLargeAddressCheck (
+-        Descriptor->ExtAddress64.Minimum,
+-        Descriptor->ExtAddress64.Maximum,
+-        Descriptor->ExtAddress64.AddressLength,
+-        Descriptor->ExtAddress64.Granularity,
++        Minimum,
++        Maximum,
++        AddressLength,
++        Granularity,
+         Descriptor->ExtAddress64.Flags,
+         MinOp, MaxOp, LengthOp, GranOp, Op);
+ 
++    ACPI_MOVE_64_TO_64(&Descriptor->ExtAddress64.Minimum, &Minimum);
++    ACPI_MOVE_64_TO_64(&Descriptor->ExtAddress64.Maximum, &Maximum);
++    ACPI_MOVE_64_TO_64(&Descriptor->ExtAddress64.AddressLength, &AddressLength);
++    ACPI_MOVE_64_TO_64(&Descriptor->ExtAddress64.Granularity, &Granularity);
++    ACPI_MOVE_64_TO_64(&Descriptor->ExtAddress64.TranslationOffset, &TranslationOffset);
++    ACPI_MOVE_64_TO_64(&Descriptor->ExtAddress64.TypeSpecific, &TypeSpecific);
++
+     Rnode->BufferLength = sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) + StringLength;
+     return (Rnode);
+ }
+diff --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
+@@ -84,7 +84,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;
+ 
+@@ -104,8 +110,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 */
+@@ -149,7 +154,7 @@ RsDoQwordIoDescriptor (
+ 
+         case 5: /* Address Granularity */
+ 
+-            Descriptor->Address64.Granularity = InitializerOp->Asl.Value.Integer;
++            Granularity = InitializerOp->Asl.Value.Integer;
+             RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Granularity));
+             GranOp = InitializerOp;
+@@ -157,7 +162,7 @@ RsDoQwordIoDescriptor (
+ 
+         case 6: /* Address Min */
+ 
+-            Descriptor->Address64.Minimum = InitializerOp->Asl.Value.Integer;
++            Minimum = InitializerOp->Asl.Value.Integer;
+             RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Minimum));
+             MinOp = InitializerOp;
+@@ -165,7 +170,7 @@ RsDoQwordIoDescriptor (
+ 
+         case 7: /* Address Max */
+ 
+-            Descriptor->Address64.Maximum = InitializerOp->Asl.Value.Integer;
++            Maximum = InitializerOp->Asl.Value.Integer;
+             RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Maximum));
+             MaxOp = InitializerOp;
+@@ -173,14 +178,14 @@ RsDoQwordIoDescriptor (
+ 
+         case 8: /* Translation Offset */
+ 
+-            Descriptor->Address64.TranslationOffset = InitializerOp->Asl.Value.Integer;
++            TranslationOffset = InitializerOp->Asl.Value.Integer;
+             RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.TranslationOffset));
+             break;
+ 
+         case 9: /* Address Length */
+ 
+-            Descriptor->Address64.AddressLength = InitializerOp->Asl.Value.Integer;
++            AddressLength = InitializerOp->Asl.Value.Integer;
+             RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.AddressLength));
+             LengthOp = InitializerOp;
+@@ -192,7 +197,7 @@ RsDoQwordIoDescriptor (
+             {
+                 OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer;
+                 OptionIndex++;
+-                Descriptor->Address64.ResourceLength++;
++                ResourceLength++;
+                 ResSourceIndex = TRUE;
+             }
+             break;
+@@ -204,8 +209,7 @@ RsDoQwordIoDescriptor (
+             {
+                 if (StringLength)
+                 {
+-                    Descriptor->Address64.ResourceLength = (UINT16)
+-                        (Descriptor->Address64.ResourceLength + StringLength);
++                    ResourceLength = (UINT16) (ResourceLength + StringLength);
+ 
+                     strcpy ((char *)
+                         &OptionalFields[OptionIndex],
+@@ -265,13 +269,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, 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);
+@@ -306,7 +317,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;
+ 
+@@ -326,8 +343,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 */
+@@ -378,7 +394,7 @@ RsDoQwordMemoryDescriptor (
+ 
+         case 6: /* Address Granularity */
+ 
+-            Descriptor->Address64.Granularity = InitializerOp->Asl.Value.Integer;
++            Granularity = InitializerOp->Asl.Value.Integer;
+             RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Granularity));
+             GranOp = InitializerOp;
+@@ -386,7 +402,7 @@ RsDoQwordMemoryDescriptor (
+ 
+         case 7: /* Min Address */
+ 
+-            Descriptor->Address64.Minimum = InitializerOp->Asl.Value.Integer;
++            Minimum = InitializerOp->Asl.Value.Integer;
+             RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Minimum));
+             MinOp = InitializerOp;
+@@ -394,7 +410,7 @@ RsDoQwordMemoryDescriptor (
+ 
+         case 8: /* Max Address */
+ 
+-            Descriptor->Address64.Maximum = InitializerOp->Asl.Value.Integer;
++            Maximum = InitializerOp->Asl.Value.Integer;
+             RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Maximum));
+             MaxOp = InitializerOp;
+@@ -402,14 +418,14 @@ RsDoQwordMemoryDescriptor (
+ 
+         case 9: /* Translation Offset */
+ 
+-            Descriptor->Address64.TranslationOffset = InitializerOp->Asl.Value.Integer;
++            TranslationOffset = InitializerOp->Asl.Value.Integer;
+             RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.TranslationOffset));
+             break;
+ 
+         case 10: /* Address Length */
+ 
+-            Descriptor->Address64.AddressLength = InitializerOp->Asl.Value.Integer;
++            AddressLength = InitializerOp->Asl.Value.Integer;
+             RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.AddressLength));
+             LengthOp = InitializerOp;
+@@ -421,7 +437,7 @@ RsDoQwordMemoryDescriptor (
+             {
+                 OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer;
+                 OptionIndex++;
+-                Descriptor->Address64.ResourceLength++;
++                ResourceLength++;
+                 ResSourceIndex = TRUE;
+             }
+             break;
+@@ -433,8 +449,7 @@ RsDoQwordMemoryDescriptor (
+             {
+                 if (StringLength)
+                 {
+-                    Descriptor->Address64.ResourceLength = (UINT16)
+-                        (Descriptor->Address64.ResourceLength + StringLength);
++                    ResourceLength = (UINT16) (ResourceLength + StringLength);
+ 
+                     strcpy ((char *)
+                         &OptionalFields[OptionIndex],
+@@ -495,13 +510,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, 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);
+@@ -536,8 +558,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;
+ 
+ 
+@@ -555,8 +583,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 */
+@@ -605,7 +632,7 @@ RsDoQwordSpaceDescriptor (
+ 
+         case 6: /* Address Granularity */
+ 
+-            Descriptor->Address64.Granularity = InitializerOp->Asl.Value.Integer;
++            Granularity = InitializerOp->Asl.Value.Integer;
+             RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Granularity));
+             GranOp = InitializerOp;
+@@ -613,7 +640,7 @@ RsDoQwordSpaceDescriptor (
+ 
+         case 7: /* Min Address */
+ 
+-            Descriptor->Address64.Minimum = InitializerOp->Asl.Value.Integer;
++            Minimum = InitializerOp->Asl.Value.Integer;
+             RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Minimum));
+             MinOp = InitializerOp;
+@@ -621,7 +648,7 @@ RsDoQwordSpaceDescriptor (
+ 
+         case 8: /* Max Address */
+ 
+-            Descriptor->Address64.Maximum = InitializerOp->Asl.Value.Integer;
++            Maximum = InitializerOp->Asl.Value.Integer;
+             RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Maximum));
+             MaxOp = InitializerOp;
+@@ -629,14 +656,14 @@ RsDoQwordSpaceDescriptor (
+ 
+         case 9: /* Translation Offset */
+ 
+-            Descriptor->Address64.TranslationOffset = InitializerOp->Asl.Value.Integer;
++            TranslationOffset = InitializerOp->Asl.Value.Integer;
+             RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.TranslationOffset));
+             break;
+ 
+         case 10: /* Address Length */
+ 
+-            Descriptor->Address64.AddressLength = InitializerOp->Asl.Value.Integer;
++            AddressLength = InitializerOp->Asl.Value.Integer;
+             RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.AddressLength));
+             LengthOp = InitializerOp;
+@@ -648,7 +675,7 @@ RsDoQwordSpaceDescriptor (
+             {
+                 OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer;
+                 OptionIndex++;
+-                Descriptor->Address64.ResourceLength++;
++                ResourceLength++;
+                 ResSourceIndex = TRUE;
+             }
+             break;
+@@ -660,8 +687,7 @@ RsDoQwordSpaceDescriptor (
+             {
+                 if (StringLength)
+                 {
+-                    Descriptor->Address64.ResourceLength = (UINT16)
+-                        (Descriptor->Address64.ResourceLength + StringLength);
++                    ResourceLength = (UINT16) (ResourceLength + StringLength);
+ 
+                     strcpy ((char *)
+                         &OptionalFields[OptionIndex],
+@@ -707,13 +733,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, 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);
+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
+@@ -293,6 +293,9 @@ RsDoGpioIntDescriptor (
+     UINT16                  VendorLength;
+     UINT16                  InterruptLength;
+     UINT16                  DescriptorSize;
++    UINT16                  IntFlags = 0;
++    UINT16                  DebounceTimeout = 0;
++    UINT16                  Flags = 0;
+     UINT32                  i;
+ 
+ 
+@@ -348,21 +351,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;
+@@ -376,7 +379,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;
+@@ -402,7 +405,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) */
+@@ -466,6 +469,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);
+ }
+ 
+@@ -499,6 +506,10 @@ RsDoGpioIoDescriptor (
+     UINT16                  VendorLength;
+     UINT16                  InterruptLength;
+     UINT16                  DescriptorSize;
++    UINT16                  IntFlags = 0;
++    UINT16                  DebounceTimeout = 0;
++    UINT16                  DriveStrength = 0;
++    UINT16                  Flags = 0;
+     UINT32                  i;
+ 
+ 
+@@ -554,7 +565,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;
+@@ -568,21 +579,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;
+@@ -608,7 +619,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) */
+@@ -671,6 +683,11 @@ RsDoGpioIoDescriptor (
+         InitializerOp = RsCompleteNodeAndGetNext (InitializerOp);
+     }
+ 
++    ACPI_MOVE_16_TO_16(&Descriptor->Gpio.IntFlags, &IntFlags);
++    ACPI_MOVE_16_TO_16(&Descriptor->Gpio.DebounceTimeout, &DebounceTimeout);
++    ACPI_MOVE_16_TO_16(&Descriptor->Gpio.DriveStrength, &DriveStrength);
++    ACPI_MOVE_16_TO_16(&Descriptor->Gpio.Flags, &Flags);
++
+     return (Rnode);
+ }
+ 
+@@ -702,6 +719,9 @@ RsDoI2cSerialBusDescriptor (
+     UINT16                  ResSourceLength;
+     UINT16                  VendorLength;
+     UINT16                  DescriptorSize;
++    UINT16                  SlaveAddress = 0;
++    UINT32                  ConnectionSpeed = 0;
++    UINT16                  TypeSpecificFlags = 0;
+     UINT32                  i;
+ 
+ 
+@@ -749,7 +769,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;
+@@ -763,14 +783,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;
+@@ -818,6 +837,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);
+ }
+ 
+@@ -849,6 +871,9 @@ RsDoSpiSerialBusDescriptor (
+     UINT16                  ResSourceLength;
+     UINT16                  VendorLength;
+     UINT16                  DescriptorSize;
++    UINT16                  DeviceSelection = 0;
++    UINT32                  ConnectionSpeed = 0;
++    UINT16                  TypeSpecificFlags = 0;
+     UINT32                  i;
+ 
+ 
+@@ -896,21 +921,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;
+@@ -931,7 +956,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;
+@@ -993,6 +1017,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);
+ }
+ 
+@@ -1024,6 +1052,10 @@ RsDoUartSerialBusDescriptor (
+     UINT16                  ResSourceLength;
+     UINT16                  VendorLength;
+     UINT16                  DescriptorSize;
++    UINT32                  DefaultBaudRate = 0;
++    UINT16                  TypeSpecificFlags = 0;
++    UINT16                  RxFifoSize = 0;
++    UINT16                  TxFifoSize = 0;
+     UINT32                  i;
+ 
+ 
+@@ -1071,21 +1103,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;
+@@ -1099,7 +1131,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;
+@@ -1113,21 +1145,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;
+@@ -1185,5 +1216,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
+@@ -85,6 +85,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;
+ 
+@@ -104,8 +110,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 */
+@@ -149,7 +154,7 @@ RsDoWordIoDescriptor (
+ 
+         case 5: /* Address Granularity */
+ 
+-            Descriptor->Address16.Granularity = (UINT16) InitializerOp->Asl.Value.Integer;
++            Granularity = (UINT16) InitializerOp->Asl.Value.Integer;
+             RsCreateWordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Granularity));
+             GranOp = InitializerOp;
+@@ -157,7 +162,7 @@ RsDoWordIoDescriptor (
+ 
+         case 6: /* Address Min */
+ 
+-            Descriptor->Address16.Minimum = (UINT16) InitializerOp->Asl.Value.Integer;
++            Minimum = (UINT16) InitializerOp->Asl.Value.Integer;
+             RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Minimum));
+             MinOp = InitializerOp;
+@@ -165,7 +170,7 @@ RsDoWordIoDescriptor (
+ 
+         case 7: /* Address Max */
+ 
+-            Descriptor->Address16.Maximum = (UINT16) InitializerOp->Asl.Value.Integer;
++            Maximum = (UINT16) InitializerOp->Asl.Value.Integer;
+             RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Maximum));
+             MaxOp = InitializerOp;
+@@ -173,14 +178,14 @@ RsDoWordIoDescriptor (
+ 
+         case 8: /* Translation Offset */
+ 
+-            Descriptor->Address16.TranslationOffset = (UINT16) InitializerOp->Asl.Value.Integer;
++            TranslationOffset = (UINT16) InitializerOp->Asl.Value.Integer;
+             RsCreateWordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.TranslationOffset));
+             break;
+ 
+         case 9: /* Address Length */
+ 
+-            Descriptor->Address16.AddressLength = (UINT16) InitializerOp->Asl.Value.Integer;
++            AddressLength = (UINT16) InitializerOp->Asl.Value.Integer;
+             RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.AddressLength));
+             LengthOp = InitializerOp;
+@@ -192,7 +197,7 @@ RsDoWordIoDescriptor (
+             {
+                 OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer;
+                 OptionIndex++;
+-                Descriptor->Address16.ResourceLength++;
++                ResourceLength++;
+                 ResSourceIndex = TRUE;
+             }
+             break;
+@@ -204,8 +209,7 @@ RsDoWordIoDescriptor (
+             {
+                 if (StringLength)
+                 {
+-                    Descriptor->Address16.ResourceLength = (UINT16)
+-                        (Descriptor->Address16.ResourceLength + StringLength);
++                    ResourceLength = (UINT16) (ResourceLength + StringLength);
+ 
+                     strcpy ((char *)
+                         &OptionalFields[OptionIndex],
+@@ -265,13 +269,20 @@ RsDoWordIoDescriptor (
+     /* Validate the Min/Max/Len/Gran values */
+ 
+     RsLargeAddressCheck (
+-        (UINT64) Descriptor->Address16.Minimum,
+-        (UINT64) Descriptor->Address16.Maximum,
+-        (UINT64) Descriptor->Address16.AddressLength,
+-        (UINT64) Descriptor->Address16.Granularity,
++        Minimum,
++        Maximum,
++        AddressLength,
++        Granularity,
+         Descriptor->Address16.Flags,
+         MinOp, MaxOp, LengthOp, GranOp, 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);
+@@ -307,6 +318,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;
+ 
+@@ -326,8 +343,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 */
+@@ -364,8 +380,7 @@ RsDoWordBusNumberDescriptor (
+ 
+         case 4: /* Address Granularity */
+ 
+-            Descriptor->Address16.Granularity =
+-                (UINT16) InitializerOp->Asl.Value.Integer;
++            Granularity = (UINT16) InitializerOp->Asl.Value.Integer;
+             RsCreateWordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Granularity));
+             GranOp = InitializerOp;
+@@ -373,8 +388,7 @@ RsDoWordBusNumberDescriptor (
+ 
+         case 5: /* Min Address */
+ 
+-            Descriptor->Address16.Minimum =
+-                (UINT16) InitializerOp->Asl.Value.Integer;
++            Minimum = (UINT16) InitializerOp->Asl.Value.Integer;
+             RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Minimum));
+             MinOp = InitializerOp;
+@@ -382,8 +396,7 @@ RsDoWordBusNumberDescriptor (
+ 
+         case 6: /* Max Address */
+ 
+-            Descriptor->Address16.Maximum =
+-                (UINT16) InitializerOp->Asl.Value.Integer;
++            Maximum = (UINT16) InitializerOp->Asl.Value.Integer;
+             RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Maximum));
+             MaxOp = InitializerOp;
+@@ -391,16 +404,14 @@ RsDoWordBusNumberDescriptor (
+ 
+         case 7: /* Translation Offset */
+ 
+-            Descriptor->Address16.TranslationOffset =
+-                (UINT16) InitializerOp->Asl.Value.Integer;
++            TranslationOffset = (UINT16) InitializerOp->Asl.Value.Integer;
+             RsCreateWordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.TranslationOffset));
+             break;
+ 
+         case 8: /* Address Length */
+ 
+-            Descriptor->Address16.AddressLength =
+-                (UINT16) InitializerOp->Asl.Value.Integer;
++            AddressLength = (UINT16) InitializerOp->Asl.Value.Integer;
+             RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH,
+                  CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.AddressLength));
+             LengthOp = InitializerOp;
+@@ -412,7 +423,7 @@ RsDoWordBusNumberDescriptor (
+             {
+                 OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer;
+                 OptionIndex++;
+-                Descriptor->Address16.ResourceLength++;
++                ResourceLength++;
+                 ResSourceIndex = TRUE;
+             }
+             break;
+@@ -424,8 +435,7 @@ RsDoWordBusNumberDescriptor (
+             {
+                 if (StringLength)
+                 {
+-                    Descriptor->Address16.ResourceLength = (UINT16)
+-                        (Descriptor->Address16.ResourceLength + StringLength);
++                    ResourceLength = (UINT16) (ResourceLength + StringLength);
+ 
+                     strcpy ((char *)
+                         &OptionalFields[OptionIndex],
+@@ -471,13 +481,20 @@ RsDoWordBusNumberDescriptor (
+     /* Validate the Min/Max/Len/Gran values */
+ 
+     RsLargeAddressCheck (
+-        (UINT64) Descriptor->Address16.Minimum,
+-        (UINT64) Descriptor->Address16.Maximum,
+-        (UINT64) Descriptor->Address16.AddressLength,
+-        (UINT64) Descriptor->Address16.Granularity,
++        Minimum,
++        Maximum,
++        AddressLength,
++        Granularity,
+         Descriptor->Address16.Flags,
+         MinOp, MaxOp, LengthOp, GranOp, 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);
+@@ -513,6 +530,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;
+ 
+@@ -531,8 +554,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 */
+@@ -581,8 +603,7 @@ RsDoWordSpaceDescriptor (
+ 
+         case 6: /* Address Granularity */
+ 
+-            Descriptor->Address16.Granularity =
+-                (UINT16) InitializerOp->Asl.Value.Integer;
++            Granularity = (UINT16) InitializerOp->Asl.Value.Integer;
+             RsCreateWordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Granularity));
+             GranOp = InitializerOp;
+@@ -590,8 +611,7 @@ RsDoWordSpaceDescriptor (
+ 
+         case 7: /* Min Address */
+ 
+-            Descriptor->Address16.Minimum =
+-                (UINT16) InitializerOp->Asl.Value.Integer;
++            Minimum = (UINT16) InitializerOp->Asl.Value.Integer;
+             RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Minimum));
+             MinOp = InitializerOp;
+@@ -599,8 +619,7 @@ RsDoWordSpaceDescriptor (
+ 
+         case 8: /* Max Address */
+ 
+-            Descriptor->Address16.Maximum =
+-                (UINT16) InitializerOp->Asl.Value.Integer;
++            Maximum = (UINT16) InitializerOp->Asl.Value.Integer;
+             RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Maximum));
+             MaxOp = InitializerOp;
+@@ -608,16 +627,14 @@ RsDoWordSpaceDescriptor (
+ 
+         case 9: /* Translation Offset */
+ 
+-            Descriptor->Address16.TranslationOffset =
+-                (UINT16) InitializerOp->Asl.Value.Integer;
++            TranslationOffset = (UINT16) InitializerOp->Asl.Value.Integer;
+             RsCreateWordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.TranslationOffset));
+             break;
+ 
+         case 10: /* Address Length */
+ 
+-            Descriptor->Address16.AddressLength =
+-                (UINT16) InitializerOp->Asl.Value.Integer;
++            AddressLength = (UINT16) InitializerOp->Asl.Value.Integer;
+             RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH,
+                 CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.AddressLength));
+             LengthOp = InitializerOp;
+@@ -629,7 +646,7 @@ RsDoWordSpaceDescriptor (
+             {
+                 OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer;
+                 OptionIndex++;
+-                Descriptor->Address16.ResourceLength++;
++                ResourceLength++;
+                 ResSourceIndex = TRUE;
+             }
+             break;
+@@ -641,8 +658,7 @@ RsDoWordSpaceDescriptor (
+             {
+                 if (StringLength)
+                 {
+-                    Descriptor->Address16.ResourceLength = (UINT16)
+-                        (Descriptor->Address16.ResourceLength + StringLength);
++                    ResourceLength = (UINT16) (ResourceLength + StringLength);
+ 
+                     strcpy ((char *)
+                         &OptionalFields[OptionIndex],
+@@ -688,13 +704,20 @@ RsDoWordSpaceDescriptor (
+     /* Validate the Min/Max/Len/Gran values */
+ 
+     RsLargeAddressCheck (
+-        (UINT64) Descriptor->Address16.Minimum,
+-        (UINT64) Descriptor->Address16.Maximum,
+-        (UINT64) Descriptor->Address16.AddressLength,
+-        (UINT64) Descriptor->Address16.Granularity,
++        Minimum,
++        Maximum,
++        AddressLength,
++        Granularity,
+         Descriptor->Address16.Flags,
+         MinOp, MaxOp, LengthOp, GranOp, 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);
+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
+@@ -107,7 +107,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];\
+@@ -122,9 +123,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];\
+@@ -151,7 +156,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
+@@ -81,13 +81,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_CAST_PTHREAD_T(pthread) ((ACPI_THREAD_ID) (pthread))
+ 
+-#if defined(__ia64__) || defined(__x86_64__) || defined(__aarch64__)
++#if __SIZEOF_LONG__ == 8
+ #define ACPI_MACHINE_WIDTH          64
+ #define COMPILER_DEPENDENT_INT64    long
+ #define COMPILER_DEPENDENT_UINT64   unsigned long
+@@ -98,6 +99,10 @@
+ #define ACPI_USE_NATIVE_DIVIDE
+ #endif
+ 
++#if __BYTE_ORDER == __BIG_ENDIAN
++#define ACPI_BIG_ENDIAN
++#endif
++
+ #ifndef __cdecl
+ #define __cdecl
+ #endif
+-- 
+1.7.12.1
+
diff --git a/debian-unaligned.patch b/debian-unaligned.patch
new file mode 100644
index 0000000..8afa8fe
--- /dev/null
+++ b/debian-unaligned.patch
@@ -0,0 +1,163 @@
+Patch carried over from the prior iasl package and updated.  This allows
+for builds on systems requiring aligned memory access. Please see
+http://lists.acpica.org/pipermail/devel/2010-July/000159.html.  Resolves
+BZ#865013 and BZ#856856.
+--
+
+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>
+---
+ source/compiler/asltree.c             | 15 ++++++++++-----
+ source/components/executer/exoparg2.c | 12 +++++++++---
+ source/include/actypes.h              | 26 +++++++++++++-------------
+ 3 file modificati, 32 inserzioni(+), 21 rimozioni(-)
+
+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
+@@ -577,28 +577,31 @@ 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;
+ 
+     switch (ParseOpcode)
+     {
+     case PARSEOP_STRING_LITERAL:
+
+-        DbgPrint (ASL_PARSE_OUTPUT, "STRING->%s", Value);
++        Op->Asl.Value.String = (ACPI_STRING) (ACPI_SIZE) Value;
++        DbgPrint (ASL_PARSE_OUTPUT, "STRING->%s", Op->Asl.Value.String);
+         break;
+ 
+     case PARSEOP_NAMESEG:
+
+-        DbgPrint (ASL_PARSE_OUTPUT, "NAMESEG->%s", Value);
++        Op->Asl.Value.String = (ACPI_STRING) (ACPI_SIZE) Value;
++        DbgPrint (ASL_PARSE_OUTPUT, "NAMESEG->%s", Op->Asl.Value.String);
+         break;
+ 
+     case PARSEOP_NAMESTRING:
+
+-        DbgPrint (ASL_PARSE_OUTPUT, "NAMESTRING->%s", Value);
++        Op->Asl.Value.String = (ACPI_STRING) (ACPI_SIZE) Value;
++        DbgPrint (ASL_PARSE_OUTPUT, "NAMESTRING->%s", Op->Asl.Value.String);
+         break;
+ 
+     case PARSEOP_EISAID:
+
+-        DbgPrint (ASL_PARSE_OUTPUT, "EISAID->%s", Value);
++        Op->Asl.Value.String = (ACPI_STRING) (ACPI_SIZE) Value;
++        DbgPrint (ASL_PARSE_OUTPUT, "EISAID->%s", Op->Asl.Value.String);
+         break;
+ 
+     case PARSEOP_METHOD:
+@@ -608,11 +610,13 @@ TrCreateValuedLeafNode (
+ 
+     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
+@@ -175,6 +176,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;
+ 
+ 
+@@ -208,8 +211,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;
+@@ -283,6 +285,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 = 0;
+ 
+@@ -326,7 +333,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;
+ 
+     case AML_CONCAT_OP: /* Concatenate (Data1, Data2, Result) */
+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
+@@ -142,6 +142,19 @@ typedef COMPILER_DEPENDENT_INT64        INT64;
+  */
+ #define ACPI_THREAD_ID                  UINT64
+ 
++/*
++ * 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
++
+ 
+ /*******************************************************************************
+  *
+@@ -168,19 +181,6 @@ typedef UINT64                          ACPI_PHYSICAL_ADDRESS;
+ #define ACPI_SIZE_MAX                   ACPI_UINT64_MAX
+ #define ACPI_USE_NATIVE_DIVIDE          /* Has native 64-bit integer support */
+ 
+-/*
+- * 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 --git a/grammar.asl.result b/grammar.asl.result
new file mode 100644
index 0000000..9f07f9f
--- /dev/null
+++ b/grammar.asl.result
@@ -0,0 +1,68 @@
+grammar.asl    199:     Name (_NPK, Package ()
+Warning  3133 -                 ^ Unknown reserved name (_NPK)
+
+grammar.asl    522:     NAME (ESC1, "abcdefg\x00hijklmn")
+Warning  3055 -                                ^ Invalid Hex/Octal Escape - Non-ASCII or NULL
+
+grammar.asl    523:     NAME (ESC2, "abcdefg\000hijklmn")
+Warning  3055 -                                ^ Invalid Hex/Octal Escape - Non-ASCII or NULL
+
+grammar.asl    620:         RCIV (Subtract (Arg0, 1))
+Remark   2098 -               ^ Recursive method call (RCIV)
+
+grammar.asl    733:             Method(_SRS)
+Warning  3102 -                          ^ Reserved method has too few arguments (_SRS requires 1)
+
+grammar.asl    949:     Method (_ERR, 2)
+Warning  3102 -                   ^ Reserved method has too few arguments (_ERR requires 3)
+
+grammar.asl   1389:         Store (0x1234567887654321, QWD2)
+Warning  3038 -                                    ^ 64-bit integer in 32-bit table, truncating (DSDT version < 2)
+
+grammar.asl   1391:         if (LNotEqual (Local0, 0x1234567887654321))
+Warning  3038 -                                                    ^ 64-bit integer in 32-bit table, truncating (DSDT version < 2)
+
+grammar.asl   1471:         SizeOf (BUFO)
+Error    6114 -                       ^ Result is not used, operator has no effect
+
+grammar.asl   1497:         Acquire (MTX2, 1)
+Warning  3130 -                           ^ Result is not used, possible operator timeout will be missed
+
+grammar.asl   1645:         Add (Local0, Local1)
+Error    6114 -                      ^ Result is not used, operator has no effect
+
+grammar.asl   1816:     Method (COND)
+Warning  3115 -                   ^ Not all control paths return a value (COND)
+
+grammar.asl   2990:             Name (_CRS,0)
+Error    6105 -                           ^ Invalid object type for reserved name (_CRS: found Integer, Buffer required)
+
+grammar.asl   6024:             Name (_HID, "*PNP0A06")
+Error    6061 -            Invalid leading asterisk ^  (*PNP0A06)
+
+grammar.asl   6163:         Name (C18C, Package (2)
+Remark   2063 -                                 ^ Initializer list shorter than declared package length
+
+grammar.asl   6475:             Name (_CRS, Buffer(26)  {"\_SB_.PCI2._CRS..........."})
+Warning  3046 -        Invalid or unknown escape sequence ^ 
+
+grammar.asl   6814:                 And (Local0, 1, Local0) 
+Error    6066 -                              ^ Method local variable is not initialized (Local0)
+
+grammar.asl   6900:             Name (_HID, "*PNP0C0A")     
+Error    6061 -            Invalid leading asterisk ^  (*PNP0C0A)
+
+grammar.asl   8717:             Name (PKG2, Package (4)
+Remark   2063 -                                     ^ Initializer list shorter than declared package length
+
+
+Intel ACPI Component Architecture
+ASL Optimizing Compiler version VVVVVVVV-YYYY [XXXXXXXXXXX]
+Copyright (c) 2000 - 2013 Intel Corporation
+
+Ignoring all errors, forcing AML file generation
+
+ASL Input:     grammar.asl - 10281 lines, 228124 bytes, 4818 keywords
+AML Output:    grammar.aml - 43476 bytes, 670 named objects, 4148 executable opcodes
+
+Compilation complete. 6 Errors, 10 Warnings, 3 Remarks, 1105 Optimizations
diff --git a/iasl.1 b/iasl.1
new file mode 100644
index 0000000..1938c7b
--- /dev/null
+++ b/iasl.1
@@ -0,0 +1,231 @@
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH IASL 1 "January 23, 2013"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh        disable hyphenation
+.\" .hy        enable hyphenation
+.\" .ad l      left justify
+.\" .ad b      justify to both left and right margins
+.\" .nf        disable filling
+.\" .fi        enable filling
+.\" .br        insert line break
+.\" .sp <n>    insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+iasl \- ACPI Source Language compiler/decompiler
+.SH SYNOPSIS
+.B iasl
+.RI [ <option> ... ]
+.RI <input-file>
+.B ...
+.SH DESCRIPTION
+This manual page briefly documents the
+.B iasl
+command. The option list is taken from the iasl interactive help.
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invode bold face and italics, 
+.\" respectively.
+.B iasl
+is an ASL compiler and decompiler.  This command provides both the ability
+to translate one or more ASL source files to their corresponding AML binary
+files, and the ability to translate AML binary files back to readable
+ASL source.
+.PP
+Much more detailed documentation may be found at
+http://www.acpica.org/documentation/.
+
+.SH OPTIONS
+
+.PP
+.SS Global
+.TP
+.B \-@ <file>
+Specify command file
+.TP
+.B \-I <dir>
+Specify additional include directory
+.TP
+.B \-T <sig>|ALL|*
+Create table template file for ACPI <sig>
+.TP
+.B \-v
+Display compiler version
+
+.PP
+.SS Preprocessor
+.TP
+.B \-D <symbol>
+Define sybol for preprocessor use
+.TP
+.B \-li
+Create prepocessed output file (*.i)
+.TP
+.B \-P
+Preprocess only and create preprocessor output file (*.i)
+.TP
+.B \-Pn
+Disable preprocessor
+
+.PP
+.SS General Output
+.TP
+.B \-p <prefix>
+Specify path/filename prefix for all output files
+.TP
+.B \-va
+Disable all errors and warnings (summary only)
+.TP
+.B \-vi
+Less verbose errors and warnings for use with IDEs
+.TP
+.B \-vo
+Enable optimization comments
+.TP
+.B \-vr
+Disable remarks
+.TP
+.B \-vs
+Disable signon
+.TP
+.B \-w{1|2|3}
+Set warning reporting level
+.TP
+.B \-we
+Report warnings as errors
+
+.PP
+.SS AML and Data Output Files
+.TP
+.B \-s{a|c}
+Create assembler or C source file (*.asm or *.c)
+.TP
+.B \-i{a|c}
+Create assembler or C include file (*.inc or *.h)
+.TP
+.B \-t{a|c|s}
+Create assembler, C, or ASL hex table (*.hex)
+
+.PP
+.SS AML Code Generation
+.TP
+.B \-oa
+Disable all optimizations (compatibility mode)
+.TP
+.B \-of
+Disable constant folding
+.TP
+.B \-oi
+Disable integer optimization to Zero/One/Ones
+.TP
+.B \-on
+Disable named reference string optimization
+.TP
+.B \-cr
+Disable Resource Descriptor error checking
+.TP
+.B \-in
+Ignore NoOp operators
+.TP
+.B \-r <revision>
+Override table header Revision (1-255)
+
+.PP
+.SS ASL Listing Files
+.TP
+.B \-l
+Create mixed listing file (ASL source and AML) (*.lst)
+.TP
+.B \-ln
+Create namespace file (*.nsp)
+.TP
+.B \-ls
+Create combined source file (expanded includes) (*.src)
+
+.PP
+.SS ACPI Data Tables
+.TP
+.B \-G
+Compile custom table containing generic operators
+.TP
+.B \-vt
+Create verbose templates (full disassembly)
+
+.PP
+.SS AML Disassembler
+.TP
+.B \-d [<file>]
+Disassemble AML to ASL source code file (*.dsl)
+.TP
+.B \-da [<file1>,<file2>]
+Disassemble multiple tables from single namespace
+.TP
+.B \-db
+Do not translate Buffers to Resource Templates
+.TP
+.B \-dc [<file>]
+Disassemble AML and immediately compile it
+.br
+(Obtain DSDT from current system if no input file)
+.TP
+.B \-e [<file1>,<file2>]
+Include ACPI table(s) for external symbol resolution
+.TP
+.B \-g
+Get ACPI tables and write to files (*.dat)
+.TP
+.B \-in
+Ignore NoOp opcodes
+.TP
+.B \-vt
+Dump binary table date in hex format within output file
+
+.PP
+.SS Help
+.TP
+.B \-h
+Additional help and compiler debug options
+.TP
+.B \-hc
+Display operators allowed in constant expressions
+.TP
+.B \-hf
+Display help for output file name generation
+.TP
+.B \-hr
+Display ACPI reserved method names
+.TP
+.B \-ht
+Display currently supported ACPI table names
+
+.PP
+.SS Debug
+.TP
+.B \-b{f|t}
+Create debug file (full or parse tree only) (*.txt)
+.TP
+.B \-f
+Ignore errors, force creation of AML output file(s)
+.TP
+.B \-n
+Parse only, no output generation
+.TP
+.B \-ot
+Display compiles times and statistics
+.TP
+.B \-x <level>
+Set debug level for trace output
+.TP
+.B \-z
+Do not insert new compiler ID for DataTables
+
+.SH AUTHOR
+iasl was written by Robert Moore <robert.moore at intel.com>.
+.PP
+This manual page was written by Mattia Dongili <malattia at debian.org>,
+for the Debian project (but may be used by others).  It was updated for
+the Fedora project by Al Stone <ahs3 at redhat.com> (and may also be used
+by others).
diff --git a/name-miscompare.patch b/name-miscompare.patch
new file mode 100644
index 0000000..0d686db
--- /dev/null
+++ b/name-miscompare.patch
@@ -0,0 +1,27 @@
+On big-endian machines, a test case looking for the methods _L1D and _E1D
+in the same scope would fail (see tests/misc/badcode.asl:184).  The names
+to be compared were being treated as 32-bit ints, and not strings.  Hence,
+the characters were re-ordered incorrectly, mismatching the assumptions
+made in the remainder of the function.
+
+diff -urN acpica-unix2-20130214/source/compiler/aslanalyze.c acpica-unix2-20130214-names/source/compiler/aslanalyze.c
+--- acpica-unix2-20130214/source/compiler/aslanalyze.c	2013-03-21 17:31:25.803324990 -0600
++++ acpica-unix2-20130214-names/source/compiler/aslanalyze.c	2013-03-21 17:43:45.357616802 -0600
+@@ -446,7 +446,7 @@
+ 
+     /* Need a null-terminated string version of NameSeg */
+ 
+-    ACPI_MOVE_32_TO_32 (Name, &Op->Asl.NameSeg);
++    ACPI_MOVE_NAME (Name, &Op->Asl.NameSeg);
+     Name[ACPI_NAME_SIZE] = 0;
+ 
+     /*
+@@ -473,7 +473,7 @@
+      * We are now sure we have an _Lxx or _Exx.
+      * Create the target name that would cause collision (Flip E/L)
+      */
+-    ACPI_MOVE_32_TO_32 (Target, Name);
++    ACPI_MOVE_NAME (Target, Name);
+ 
+     /* Inject opposite letter ("L" versus "E") */
+ 
diff --git a/run-misc-tests.sh b/run-misc-tests.sh
new file mode 100644
index 0000000..ad38789
--- /dev/null
+++ b/run-misc-tests.sh
@@ -0,0 +1,52 @@
+#!/bin/bash
+#
+#       run the misc tests: we need to do this in a script since
+#       these are expected to fail which would normally cause %check
+#       to stop.  however, this is expected behavior.  we are running
+#       iasl precisely because we expect it to stop when presented with
+#       faulty ASL.
+#
+#       this script assumes it is in the source 'tests' directory at
+#       start.
+#
+
+set -x
+
+BINDIR="$1"
+VERSION="$2"
+
+# create files to compare against
+$BINDIR/iasl -h
+
+m=`uname -m`
+case $m in
+    *64) BITS=64
+         ;;
+    *)   BITS=32
+         ;;
+esac
+WHEN=`date +"%b %_d %Y"`
+sed -e "s/XXXXXXXXXXX/$WHEN/" \
+    -e "s/YYYY/$BITS/" \
+    -e "s/VVVVVVVV/$VERSION/" \
+    ../badcode.asl.result > misc/badcode.asl.result
+sed -e "s/XXXXXXXXXXX/$WHEN/" \
+    -e "s/YYYY/$BITS/" \
+    -e "s/VVVVVVVV/$VERSION/" \
+    ../grammar.asl.result > misc/grammar.asl.result
+
+cd misc
+
+# see if badcode.asl failed as expected
+# NB: the -f option is required so we can see all of the errors
+$BINDIR/iasl -f badcode.asl 2>&1 | tee badcode
+diff badcode badcode.asl.result >/dev/null 2>&1
+[ $? -eq 0 ] || exit 1
+
+# see if grammar.asl failed as expected
+# NB: the -f option is required so we can see all of the errors
+$BINDIR/iasl -f -of grammar.asl 2>&1 | tee grammar
+diff grammar grammar.asl.result >/dev/null 2>&1
+[ $? -eq 0 ] || exit 1
+
+exit 0
diff --git a/sources b/sources
index e69de29..b5a146d 100644
--- a/sources
+++ b/sources
@@ -0,0 +1,2 @@
+6694a6a5baa4a23fba892b8ad23f3959  acpica-unix2-20130823.tar.gz
+04f41a2d2da4458e0afeed1a51baa684  acpitests-unix-20130823.tar.gz


More information about the scm-commits mailing list