Import acpica-20160930: trunk
authorchristos <christos@NetBSD.org>
Fri, 11 Nov 2016 19:14:16 +0000
branchtrunk
changeset 246098 0fb78f09f16c
parent 246097 280865a8d8b9
child 246099 b2a5b29d9f09
Import acpica-20160930: ---------------------------------------- 30 September 2016. Summary of changes for version 20160930: 1) ACPICA kernel-resident subsystem: Fixed a regression in the internal AcpiTbFindTable function where a non AE_OK exception could inadvertently be returned even if the function did not fail. This problem affects the following operators: DataTableRegion LoadTable Fixed a regression in the LoadTable operator where a load to any namespace location other than the root no longer worked properly. Increased the maximum loop count value that will result in the AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to prevent infinite loops within the AML interpreter and thus the host OS kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to 1,048,575). Moved the AcpiGbl_MaxLoopIterations configuration variable to the public acpixf.h file. This allows hosts to easily configure the maximum loop count at runtime. Removed an illegal character in the strtoul64.c file. This character caused errors with some C compilers. Example Code and Data Size: These are the sizes for the OS-independent acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code includes the debug output trace mechanism and has a much larger code and data size. Current Release: Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total Debug Version: 200.7K Code, 82.1K Data, 282.8K Total Previous Release: Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 2) iASL Compiler/Disassembler and Tools: Disassembler: Fixed a problem with the conversion of Else{If{ blocks into the simpler ASL ElseIf keyword. During the conversion, a trailing If block could be lost and missing from the disassembled output. iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+, the missing rule caused a parse error when using the Index operator as an operand to ObjectType. This construct now compiles properly. Example: ObjectType(PKG1[4]). iASL: Correctly handle unresolved symbols in the hardware map file (-lm option). Previously, unresolved symbols could cause a protection fault. Such symbols are now marked as unresolved in the map file. iASL: Implemented support to allow control method invocations as an operand to the ASL DeRefOf operator. Example: DeRefOf(MTH1(Local0)) Disassembler: Improved support for the ToPLD ASL macro. Detection of a possible _PLD buffer now includes examination of both the normal buffer length (16 or 20) as well as the surrounding AML package length. Disassembler: Fixed a problem with the decoding of complex expressions within the Divide operator for ASL+. For the case where both the quotient and remainder targets are specified, the entire statement cannot be disassembled. Previously, the output incorrectly contained a mix of ASL- and ASL+ operators. This mixed statement causes a syntax error when compiled. Example: Divide (Add (INT1, 6), 128, RSLT, QUOT) // was incorrectly disassembled to: Divide (INT1 + 6, 128, RSLT, QUOT) iASL/Tools: Added support to process AML and non-AML ACPI tables consistently. For the disassembler and AcpiExec, allow all types of ACPI tables (AML and data tables). For the iASL -e option, allow only AML tables (DSDT/SSDT). ---------------------------------------- 31 August 2016. Summary of changes for version 20160831: 1) ACPICA kernel-resident subsystem: Improve support for the so-called "module-level code", which is defined to be math, logical and control AML opcodes that appear outside of any control method. This change improves the support by adding more opcodes that can be executed in the manner. Some other issues have been solved, and the ASL grammar changes to support such code under all scope operators (Device, etc.) are complete. Lv Zheng. UEFI support: these OSL functions have been implemented. This is an additional step toward supporting the AcpiExec utility natively (with full hardware access) under UEFI. Marcelo Ferreira. AcpiOsReadPciConfiguration AcpiOsWritePciConfiguration Fixed a possible mutex error during control method auto-serialization. Lv Zheng. Updated support for the Generic Address Structure by fully implementing all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv Zheng. Updated the return value for the internal _OSI method. Instead of 0xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF for 64-bit ACPI tables. This fixes an incompatibility with other ACPI implementations, and will be reflected and clarified in the next version of the ACPI specification. Implemented two new table events that can be passed to an ACPICA table handler. These events are used to indicate a table installation or uninstallation. These events are used in addition to existed table load and unload events. Lv Zheng. Implemented a cleanup for all internal string-to-integer conversions. Consolidate multiple versions of this functionality and limit possible bases to either 10 or 16 to simplify the code. Adds a new file, utstrtoul64. Cleanup the inclusion order of the various compiler-specific headers. This simplifies build configuration management. The compiler-specific headers are now split out from the host-specific headers. Lv Zheng. Example Code and Data Size: These are the sizes for the OS-independent acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code includes the debug output trace mechanism and has a much larger code and data size. Current Release: Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 2) iASL Compiler/Disassembler and Tools: iASL/AcpiExec: Added a command line option to display the build date/time of the tool (-vd). This can be useful to verify that the correct version of the tools are being used. AML Debugger: Implemented a new subcommand ("execute predef") to execute all predefined control methods and names within the current namespace. This can be useful for debugging problems with ACPI tables and the ACPI namespace. ---------------------------------------- 29 July 2016. Summary of changes for version 20160729: 1) ACPICA kernel-resident subsystem: Implemented basic UEFI support for the various ACPICA tools. This includes: 1) An OSL to implement the various AcpiOs* interfaces on UEFI. 2) Support to obtain the ACPI tables on UEFI. 3) Local implementation of required C library functions not available on UEFI. 4) A front-end (main) function for the tools for UEFI-related initialization. The initial deployment of this support is the AcpiDump utility executing as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit"). Current environments supported are Linux/Unix. MSVC generation is not supported at this time. See the generate/efi/README file for build instructions. Lv Zheng. Future plans include porting the AcpiExec utility to execute natively on the platform with I/O and memory access. This will allow viewing/dump of the platform namespace and native execution of ACPI control methods that access the actual hardware. To fully implement this support, the OSL functions below must be implemented with UEFI interfaces. Any community help in the implementation of these functions would be appreciated: AcpiOsReadPort AcpiOsWritePort AcpiOsReadMemory AcpiOsWriteMemory AcpiOsReadPciConfiguration AcpiOsWritePciConfiguration Restructured and standardized the C library configuration for ACPICA, resulting in the various configuration options below. This includes a global restructuring of the compiler-dependent and platform-dependent include files. These changes may affect the existing platform-dependent configuration files on some hosts. Lv Zheng. The current C library configuration options appear below. For any issues, it may be helpful to examine the existing compiler-dependent and platform-dependent files as examples. Lv Zheng. 1) Linux kernel: ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C library. ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 2) Unix/Windows/BSD applications: ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C library. ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 3) UEFI applications: ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C library. ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library. 4) UEFI applications (EDK2/StdLib): ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library. ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library. AML interpreter: "module-level code" support. Allows for execution of so- called "executable" AML code (math/logical operations, etc.) outside of control methods not just at the module level (top level) but also within any scope declared outside of a control method - Scope{}, Device{}, Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng. Simplified the configuration of the "maximum AML loops" global option by adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be modified at runtime. Example Code and Data Size: These are the sizes for the OS-independent acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code includes the debug output trace mechanism and has a much larger code and data size. Current Release: Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total Debug Version: 199.0K Code, 81.8K Data, 280.8K Total 2) iASL Compiler/Disassembler and Tools: iASL: Add full support for the RASF ACPI table (RAS Features Table). Includes disassembler, data table compiler, and header support. iASL Expand "module-level code" support. Allows for compilation/disassembly of so-called "executable" AML code (math/logical operations, etc.) outside of control methods not just at the module level (top level) but also within any scope declared outside of a control method - Scope{}, Device{}, Processor{}, PowerResource{}, and ThermalZone{}. AcpiDump: Added support for dumping all SSDTs on newer versions of Windows. These tables are now easily available -- SSDTs are not available through the registry on older versions.
sys/external/bsd/acpica/dist/changes.txt
sys/external/bsd/acpica/dist/common/acfileio.c
sys/external/bsd/acpica/dist/common/acgetline.c
sys/external/bsd/acpica/dist/common/adisasm.c
sys/external/bsd/acpica/dist/common/ahtable.c
sys/external/bsd/acpica/dist/common/cmfsize.c
sys/external/bsd/acpica/dist/common/dmtable.c
sys/external/bsd/acpica/dist/common/dmtables.c
sys/external/bsd/acpica/dist/common/getopt.c
sys/external/bsd/acpica/dist/compiler/aslcstyle.y
sys/external/bsd/acpica/dist/compiler/aslhelp.c
sys/external/bsd/acpica/dist/compiler/aslhelpers.y
sys/external/bsd/acpica/dist/compiler/aslkeywords.y
sys/external/bsd/acpica/dist/compiler/aslmain.c
sys/external/bsd/acpica/dist/compiler/aslmaputils.c
sys/external/bsd/acpica/dist/compiler/asloperands.c
sys/external/bsd/acpica/dist/compiler/asloptions.c
sys/external/bsd/acpica/dist/compiler/aslparser.y
sys/external/bsd/acpica/dist/compiler/aslprimaries.y
sys/external/bsd/acpica/dist/compiler/aslresources.y
sys/external/bsd/acpica/dist/compiler/aslrules.y
sys/external/bsd/acpica/dist/compiler/aslstubs.c
sys/external/bsd/acpica/dist/compiler/asltokens.y
sys/external/bsd/acpica/dist/compiler/asltypes.y
sys/external/bsd/acpica/dist/compiler/dtcompiler.h
sys/external/bsd/acpica/dist/compiler/dttemplate.h
sys/external/bsd/acpica/dist/debugger/dbconvert.c
sys/external/bsd/acpica/dist/debugger/dbfileio.c
sys/external/bsd/acpica/dist/disassembler/dmopcode.c
sys/external/bsd/acpica/dist/dispatcher/dsmethod.c
sys/external/bsd/acpica/dist/dispatcher/dswexec.c
sys/external/bsd/acpica/dist/dispatcher/dswload2.c
sys/external/bsd/acpica/dist/events/evgpe.c
sys/external/bsd/acpica/dist/events/evgpeinit.c
sys/external/bsd/acpica/dist/events/evxfgpe.c
sys/external/bsd/acpica/dist/executer/exconcat.c
sys/external/bsd/acpica/dist/executer/exconvrt.c
sys/external/bsd/acpica/dist/executer/exmisc.c
sys/external/bsd/acpica/dist/executer/exoparg1.c
sys/external/bsd/acpica/dist/executer/exresop.c
sys/external/bsd/acpica/dist/executer/extrace.c
sys/external/bsd/acpica/dist/executer/exutils.c
sys/external/bsd/acpica/dist/generate/unix/acpibin/Makefile
sys/external/bsd/acpica/dist/generate/unix/acpidump/Makefile
sys/external/bsd/acpica/dist/generate/unix/acpiexamples/Makefile
sys/external/bsd/acpica/dist/generate/unix/acpiexec/Makefile
sys/external/bsd/acpica/dist/generate/unix/acpihelp/Makefile
sys/external/bsd/acpica/dist/generate/unix/acpinames/Makefile
sys/external/bsd/acpica/dist/generate/unix/acpisrc/Makefile
sys/external/bsd/acpica/dist/generate/unix/acpixtract/Makefile
sys/external/bsd/acpica/dist/generate/unix/iasl/Makefile
sys/external/bsd/acpica/dist/hardware/hwgpe.c
sys/external/bsd/acpica/dist/include/acclib.h
sys/external/bsd/acpica/dist/include/acconfig.h
sys/external/bsd/acpica/dist/include/acevents.h
sys/external/bsd/acpica/dist/include/acparser.h
sys/external/bsd/acpica/dist/include/actbl.h
sys/external/bsd/acpica/dist/include/platform/accygwin.h
sys/external/bsd/acpica/dist/include/platform/acdragonfly.h
sys/external/bsd/acpica/dist/include/platform/acefi.h
sys/external/bsd/acpica/dist/include/platform/acefiex.h
sys/external/bsd/acpica/dist/include/platform/acenv.h
sys/external/bsd/acpica/dist/include/platform/acenvex.h
sys/external/bsd/acpica/dist/include/platform/acfreebsd.h
sys/external/bsd/acpica/dist/include/platform/acgcc.h
sys/external/bsd/acpica/dist/include/platform/acgccex.h
sys/external/bsd/acpica/dist/include/platform/achaiku.h
sys/external/bsd/acpica/dist/include/platform/acintel.h
sys/external/bsd/acpica/dist/include/platform/aclinux.h
sys/external/bsd/acpica/dist/include/platform/aclinuxex.h
sys/external/bsd/acpica/dist/include/platform/acmacosx.h
sys/external/bsd/acpica/dist/include/platform/acmsvc.h
sys/external/bsd/acpica/dist/include/platform/acmsvcex.h
sys/external/bsd/acpica/dist/include/platform/acos2.h
sys/external/bsd/acpica/dist/include/platform/acqnx.h
sys/external/bsd/acpica/dist/include/platform/acwin.h
sys/external/bsd/acpica/dist/include/platform/acwin64.h
sys/external/bsd/acpica/dist/namespace/nsconvert.c
sys/external/bsd/acpica/dist/namespace/nsload.c
sys/external/bsd/acpica/dist/namespace/nsparse.c
sys/external/bsd/acpica/dist/namespace/nsutils.c
sys/external/bsd/acpica/dist/os_specific/service_layers/osunixxf.c
sys/external/bsd/acpica/dist/os_specific/service_layers/oswintbl.c
sys/external/bsd/acpica/dist/os_specific/service_layers/oswinxf.c
sys/external/bsd/acpica/dist/parser/psparse.c
sys/external/bsd/acpica/dist/parser/psxface.c
sys/external/bsd/acpica/dist/tables/tbfind.c
sys/external/bsd/acpica/dist/tools/acpibin/abcompare.c
sys/external/bsd/acpica/dist/tools/acpibin/abmain.c
sys/external/bsd/acpica/dist/tools/acpibin/acpibin.h
sys/external/bsd/acpica/dist/tools/acpidump/acpidump.h
sys/external/bsd/acpica/dist/tools/acpidump/apdump.c
sys/external/bsd/acpica/dist/tools/acpidump/apmain.c
sys/external/bsd/acpica/dist/tools/acpiexec/aecommon.h
sys/external/bsd/acpica/dist/tools/acpiexec/aeexec.c
sys/external/bsd/acpica/dist/tools/acpiexec/aehandlers.c
sys/external/bsd/acpica/dist/tools/acpiexec/aeinitfile.c
sys/external/bsd/acpica/dist/tools/acpiexec/aemain.c
sys/external/bsd/acpica/dist/tools/acpihelp/acpihelp.h
sys/external/bsd/acpica/dist/tools/acpihelp/ahamlops.c
sys/external/bsd/acpica/dist/tools/acpihelp/ahdecode.c
sys/external/bsd/acpica/dist/tools/acpihelp/ahgrammar.c
sys/external/bsd/acpica/dist/tools/acpihelp/ahmain.c
sys/external/bsd/acpica/dist/tools/acpinames/anmain.c
sys/external/bsd/acpica/dist/tools/acpisrc/acpisrc.h
sys/external/bsd/acpica/dist/tools/acpisrc/asfile.c
sys/external/bsd/acpica/dist/tools/acpisrc/asmain.c
sys/external/bsd/acpica/dist/tools/acpisrc/astable.c
sys/external/bsd/acpica/dist/utilities/utaddress.c
sys/external/bsd/acpica/dist/utilities/utbuffer.c
sys/external/bsd/acpica/dist/utilities/utstrtoul64.c
--- a/sys/external/bsd/acpica/dist/changes.txt	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/changes.txt	Fri Nov 11 19:14:16 2016 +0000
@@ -1,8 +1,250 @@
 ----------------------------------------
+30 September 2016. Summary of changes for version 20160930:
+
+
+1) ACPICA kernel-resident subsystem:
+
+Fixed a regression in the internal AcpiTbFindTable function where a non 
+AE_OK exception could inadvertently be returned even if the function did 
+not fail. This problem affects the following operators:
+    DataTableRegion
+    LoadTable
+
+Fixed a regression in the LoadTable operator where a load to any 
+namespace location other than the root no longer worked properly.
+
+Increased the maximum loop count value that will result in the 
+AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to 
+prevent infinite loops within the AML interpreter and thus the host OS 
+kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to 
+1,048,575).
+
+Moved the AcpiGbl_MaxLoopIterations configuration variable to the public 
+acpixf.h file. This allows hosts to easily configure the maximum loop 
+count at runtime.
+
+Removed an illegal character in the strtoul64.c file. This character 
+caused errors with some C compilers.
+
+Example Code and Data Size: These are the sizes for the OS-independent 
+acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
+debug version of the code includes the debug output trace mechanism and 
+has a much larger code and data size.
+
+  Current Release:
+    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
+    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
+  Previous Release:
+    Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total
+    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
+
+
+2) iASL Compiler/Disassembler and Tools:
+
+Disassembler: Fixed a problem with the conversion of Else{If{ blocks into 
+the simpler ASL ElseIf keyword. During the conversion, a trailing If 
+block could be lost and missing from the disassembled output.
+
+iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+, 
+the missing rule caused a parse error when using the Index operator as an 
+operand to ObjectType. This construct now compiles properly. Example:
+    ObjectType(PKG1[4]).
+
+iASL: Correctly handle unresolved symbols in the hardware map file (-lm 
+option). Previously, unresolved symbols could cause a protection fault. 
+Such symbols are now marked as unresolved in the map file.
+
+iASL: Implemented support to allow control method invocations as an 
+operand to the ASL DeRefOf operator. Example:
+    DeRefOf(MTH1(Local0))
+
+Disassembler: Improved support for the ToPLD ASL macro. Detection of a 
+possible _PLD buffer now includes examination of both the normal buffer 
+length (16 or 20) as well as the surrounding AML package length.
+
+Disassembler: Fixed a problem with the decoding of complex expressions 
+within the Divide operator for ASL+. For the case where both the quotient 
+and remainder targets are specified, the entire statement cannot be 
+disassembled. Previously, the output incorrectly contained a mix of ASL- 
+and ASL+ operators. This mixed statement causes a syntax error when 
+compiled. Example:
+    Divide (Add (INT1, 6), 128, RSLT, QUOT)  // was incorrectly 
+disassembled to:
+    Divide (INT1 + 6, 128, RSLT, QUOT)
+
+iASL/Tools: Added support to process AML and non-AML ACPI tables 
+consistently. For the disassembler and AcpiExec, allow all types of ACPI 
+tables (AML and data tables). For the iASL -e option, allow only AML 
+tables (DSDT/SSDT).
+
+----------------------------------------
+31 August 2016. Summary of changes for version 20160831:
+
+
+1) ACPICA kernel-resident subsystem:
+
+Improve support for the so-called "module-level code", which is defined 
+to be math, logical and control AML opcodes that appear outside of any 
+control method. This change improves the support by adding more opcodes 
+that can be executed in the manner. Some other issues have been solved, 
+and the ASL grammar changes to support such code under all scope 
+operators (Device, etc.) are complete. Lv Zheng.
+
+UEFI support: these OSL functions have been implemented. This is an 
+additional step toward supporting the AcpiExec utility natively (with 
+full hardware access) under UEFI. Marcelo Ferreira.
+    AcpiOsReadPciConfiguration
+    AcpiOsWritePciConfiguration
+
+Fixed a possible mutex error during control method auto-serialization. Lv 
+Zheng. 
+
+Updated support for the Generic Address Structure by fully implementing 
+all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv 
+Zheng.
+
+Updated the return value for the internal _OSI method. Instead of 
+0xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF 
+for 64-bit ACPI tables. This fixes an incompatibility with other ACPI 
+implementations, and will be reflected and clarified in the next version 
+of the ACPI specification.
+
+Implemented two new table events that can be passed to an ACPICA table 
+handler. These events are used to indicate a table installation or 
+uninstallation. These events are used in addition to existed table load 
+and unload events. Lv Zheng.
+
+Implemented a cleanup for all internal string-to-integer conversions. 
+Consolidate multiple versions of this functionality and limit possible 
+bases to either 10 or 16 to simplify the code. Adds a new file, 
+utstrtoul64.
+
+Cleanup the inclusion order of the various compiler-specific headers. 
+This simplifies build configuration management. The compiler-specific 
+headers are now split out from the host-specific headers. Lv Zheng.
+
+Example Code and Data Size: These are the sizes for the OS-independent 
+acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
+debug version of the code includes the debug output trace mechanism and 
+has a much larger code and data size.
+
+  Current Release:
+    Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total
+    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
+
+
+2) iASL Compiler/Disassembler and Tools:
+
+iASL/AcpiExec: Added a command line option to display the build date/time 
+of the tool (-vd). This can be useful to verify that the correct version 
+of the tools are being used.
+
+AML Debugger: Implemented a new subcommand ("execute predef") to execute 
+all predefined control methods and names within the current namespace. 
+This can be useful for debugging problems with ACPI tables and the ACPI 
+namespace.
+
+----------------------------------------
+29 July 2016. Summary of changes for version 20160729:
+
+
+1) ACPICA kernel-resident subsystem:
+
+Implemented basic UEFI support for the various ACPICA tools. This 
+includes:
+1) An OSL to implement the various AcpiOs* interfaces on UEFI.
+2) Support to obtain the ACPI tables on UEFI.
+3) Local implementation of required C library functions not available on 
+UEFI.
+4) A front-end (main) function for the tools for UEFI-related 
+initialization.
+
+The initial deployment of this support is the AcpiDump utility executing 
+as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit"). 
+Current environments supported are Linux/Unix. MSVC generation is not 
+supported at this time. See the generate/efi/README file for build 
+instructions. Lv Zheng.
+
+Future plans include porting the AcpiExec utility to execute natively on 
+the platform with I/O and memory access. This will allow viewing/dump of 
+the platform namespace and native execution of ACPI control methods that 
+access the actual hardware. To fully implement this support, the OSL 
+functions below must be implemented with UEFI interfaces. Any community 
+help in the implementation of these functions would be appreciated:
+    AcpiOsReadPort
+    AcpiOsWritePort
+    AcpiOsReadMemory
+    AcpiOsWriteMemory
+    AcpiOsReadPciConfiguration
+    AcpiOsWritePciConfiguration
+
+Restructured and standardized the C library configuration for ACPICA, 
+resulting in the various configuration options below. This includes a 
+global restructuring of the compiler-dependent and platform-dependent 
+include files. These changes may affect the existing platform-dependent 
+configuration files on some hosts. Lv Zheng. 
+
+The current C library configuration options appear below. For any issues, 
+it may be helpful to examine the existing compiler-dependent and 
+platform-dependent files as examples. Lv Zheng. 
+
+1) Linux kernel:
+    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 
+library.
+    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
+2) Unix/Windows/BSD applications:
+    ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C 
+library.
+    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
+3) UEFI applications:
+    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 
+library.
+    ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library.
+4) UEFI applications (EDK2/StdLib):
+    ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library.
+    ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library.
+
+
+AML interpreter: "module-level code" support. Allows for execution of so-
+called "executable" AML code (math/logical operations, etc.) outside of 
+control methods not just at the module level (top level) but also within 
+any scope declared outside of a control method - Scope{}, Device{}, 
+Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng. 
+
+Simplified the configuration of the "maximum AML loops" global option by 
+adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be 
+modified at runtime.
+
+
+Example Code and Data Size: These are the sizes for the OS-independent 
+acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
+debug version of the code includes the debug output trace mechanism and 
+has a much larger code and data size.
+
+  Current Release:
+    Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total
+    Debug Version:     199.0K Code, 81.8K Data, 280.8K Total
+
+
+2) iASL Compiler/Disassembler and Tools:
+
+iASL: Add full support for the RASF ACPI table (RAS Features Table). 
+Includes disassembler, data table compiler, and header support.
+
+iASL Expand "module-level code" support. Allows for 
+compilation/disassembly of so-called "executable" AML code (math/logical 
+operations, etc.) outside of control methods not just at the module level 
+(top level) but also within any scope declared outside of a control 
+method - Scope{}, Device{}, Processor{}, PowerResource{}, and 
+ThermalZone{}.
+
+AcpiDump: Added support for dumping all SSDTs on newer versions of 
+Windows. These tables are now easily available -- SSDTs are not available 
+through the registry on older versions.
+
+----------------------------------------
 27 May 2016. Summary of changes for version 20160527:
 
-This release is available at https://acpica.org/downloads
-
 
 1) ACPICA kernel-resident subsystem:
 
--- a/sys/external/bsd/acpica/dist/common/acfileio.c	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/common/acfileio.c	Fri Nov 11 19:14:16 2016 +0000
@@ -43,10 +43,9 @@
 
 #include "acpi.h"
 #include "accommon.h"
-#include "acapps.h"
 #include "actables.h"
 #include "acutils.h"
-#include <errno.h>
+#include "acapps.h"
 
 #define _COMPONENT          ACPI_UTILITIES
         ACPI_MODULE_NAME    ("acfileio")
@@ -98,7 +97,7 @@
     File = fopen (Filename, "rb");
     if (!File)
     {
-        perror ("Could not open input file");
+        fprintf (stderr, "Could not open input file: %s\n", Filename);
         if (errno == ENOENT)
         {
             return (AE_NOT_EXIST);
@@ -263,12 +262,14 @@
         return (Status);
     }
 
+
     if (GetOnlyAmlTables)
     {
-        /* Table must be an AML table (DSDT/SSDT) or FADT */
-
-        if (!ACPI_COMPARE_NAME (TableHeader.Signature, ACPI_SIG_FADT) &&
-            !AcpiUtIsAmlTable (&TableHeader))
+        /*
+         * Table must be an AML table (DSDT/SSDT).
+         * Used for iASL -e option only.
+         */
+        if (!AcpiUtIsAmlTable (&TableHeader))
         {
             fprintf (stderr,
                 "    %s: Table [%4.4s] is not an AML table - ignoring\n",
@@ -280,7 +281,7 @@
 
     /* Allocate a buffer for the entire table */
 
-    Table = AcpiOsAllocate ((size_t) TableHeader.Length);
+    Table = AcpiOsAllocate ((ACPI_SIZE) TableHeader.Length);
     if (!Table)
     {
         return (AE_NO_MEMORY);
@@ -388,7 +389,7 @@
     long                    TableOffset)
 {
     ACPI_TABLE_HEADER       TableHeader;
-    size_t                  Actual;
+    ACPI_SIZE               Actual;
     long                    OriginalOffset;
     UINT32                  FileSize;
     UINT32                  i;
--- a/sys/external/bsd/acpica/dist/common/acgetline.c	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/common/acgetline.c	Fri Nov 11 19:14:16 2016 +0000
@@ -47,8 +47,6 @@
 #include "acparser.h"
 #include "acdebug.h"
 
-#include <stdio.h>
-
 /*
  * This is an os-independent implementation of line-editing services needed
  * by the AcpiExec utility. It uses getchar() and putchar() and the existing
--- a/sys/external/bsd/acpica/dist/common/adisasm.c	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/common/adisasm.c	Fri Nov 11 19:14:16 2016 +0000
@@ -49,8 +49,6 @@
 #include "acparser.h"
 #include "acapps.h"
 
-#include <stdio.h>
-
 
 #define _COMPONENT          ACPI_TOOLS
         ACPI_MODULE_NAME    ("adisasm")
--- a/sys/external/bsd/acpica/dist/common/ahtable.c	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/common/ahtable.c	Fri Nov 11 19:14:16 2016 +0000
@@ -124,6 +124,7 @@
     {ACPI_SIG_NFIT, "NVDIMM Firmware Interface Table"},
     {ACPI_SIG_PCCT, "Platform Communications Channel Table"},
     {ACPI_SIG_PMTT, "Platform Memory Topology Table"},
+    {ACPI_SIG_RASF, "RAS Features Table"},
     {ACPI_RSDP_NAME,"Root System Description Pointer"},
     {ACPI_SIG_RSDT, "Root System Description Table"},
     {ACPI_SIG_S3PT, "S3 Performance Table"},
--- a/sys/external/bsd/acpica/dist/common/cmfsize.c	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/common/cmfsize.c	Fri Nov 11 19:14:16 2016 +0000
@@ -44,7 +44,6 @@
 #include "acpi.h"
 #include "accommon.h"
 #include "acapps.h"
-#include <stdio.h>
 
 #define _COMPONENT          ACPI_TOOLS
         ACPI_MODULE_NAME    ("cmfsize")
@@ -74,19 +73,19 @@
 
     /* Save the current file pointer, seek to EOF to obtain file size */
 
-    CurrentOffset = AcpiOsGetFileOffset (File);
+    CurrentOffset = ftell (File);
     if (CurrentOffset < 0)
     {
         goto OffsetError;
     }
 
-    Status = AcpiOsSetFileOffset (File, 0, ACPI_FILE_END);
+    Status = fseek (File, 0, SEEK_END);
     if (ACPI_FAILURE (Status))
     {
         goto SeekError;
     }
 
-    FileSize = AcpiOsGetFileOffset (File);
+    FileSize = ftell (File);
     if (FileSize < 0)
     {
         goto OffsetError;
@@ -94,7 +93,7 @@
 
     /* Restore original file pointer */
 
-    Status = AcpiOsSetFileOffset (File, CurrentOffset, ACPI_FILE_BEGIN);
+    Status = fseek (File, CurrentOffset, SEEK_SET);
     if (ACPI_FAILURE (Status))
     {
         goto SeekError;
@@ -104,10 +103,10 @@
 
 
 OffsetError:
-    AcpiLogError ("Could not get file offset");
+    fprintf (stderr, "Could not get file offset\n");
     return (ACPI_UINT32_MAX);
 
 SeekError:
-    AcpiLogError ("Could not set file offset");
+    fprintf (stderr, "Could not set file offset\n");
     return (ACPI_UINT32_MAX);
 }
--- a/sys/external/bsd/acpica/dist/common/dmtable.c	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/common/dmtable.c	Fri Nov 11 19:14:16 2016 +0000
@@ -358,6 +358,7 @@
     {ACPI_SIG_NFIT, AcpiDmTableInfoNfit,    AcpiDmDumpNfit, DtCompileNfit,  TemplateNfit},
     {ACPI_SIG_PCCT, AcpiDmTableInfoPcct,    AcpiDmDumpPcct, DtCompilePcct,  TemplatePcct},
     {ACPI_SIG_PMTT, NULL,                   AcpiDmDumpPmtt, DtCompilePmtt,  TemplatePmtt},
+    {ACPI_SIG_RASF, AcpiDmTableInfoRasf,    NULL,           NULL,           TemplateRasf},
     {ACPI_SIG_RSDT, NULL,                   AcpiDmDumpRsdt, DtCompileRsdt,  TemplateRsdt},
     {ACPI_SIG_S3PT, NULL,                   NULL,           NULL,           TemplateS3pt},
     {ACPI_SIG_SBST, AcpiDmTableInfoSbst,    NULL,           NULL,           TemplateSbst},
@@ -844,6 +845,11 @@
             ByteLength = 10;
             break;
 
+        case ACPI_DMT_BUF12:
+
+            ByteLength = 12;
+            break;
+
         case ACPI_DMT_BUF16:
         case ACPI_DMT_UUID:
 
@@ -1006,6 +1012,7 @@
 
         case ACPI_DMT_BUF7:
         case ACPI_DMT_BUF10:
+        case ACPI_DMT_BUF12:
         case ACPI_DMT_BUF16:
         case ACPI_DMT_BUF128:
             /*
--- a/sys/external/bsd/acpica/dist/common/dmtables.c	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/common/dmtables.c	Fri Nov 11 19:14:16 2016 +0000
@@ -42,14 +42,12 @@
  */
 
 #include "aslcompiler.h"
-#include "acapps.h"
 #include "acdispat.h"
 #include "acnamesp.h"
 #include "actables.h"
 #include "acparser.h"
+#include "acapps.h"
 
-#include <stdio.h>
-#include <time.h>
 
 #define _COMPONENT          ACPI_TOOLS
         ACPI_MODULE_NAME    ("dmtables")
--- a/sys/external/bsd/acpica/dist/common/getopt.c	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/common/getopt.c	Fri Nov 11 19:14:16 2016 +0000
@@ -57,7 +57,7 @@
 #include "acapps.h"
 
 #define ACPI_OPTION_ERROR(msg, badchar) \
-    if (AcpiGbl_Opterr) {AcpiLogError ("%s%c\n", msg, badchar);}
+    if (AcpiGbl_Opterr) {fprintf (stderr, "%s%c\n", msg, badchar);}
 
 
 int                 AcpiGbl_Opterr = 1;
@@ -101,7 +101,7 @@
     }
     else if (++AcpiGbl_Optind >= argc)
     {
-        ACPI_OPTION_ERROR ("Option requires an argument: -", 'v');
+        ACPI_OPTION_ERROR ("\nOption requires an argument", 0);
 
         CurrentCharPtr = 1;
         return (-1);
--- a/sys/external/bsd/acpica/dist/compiler/aslcstyle.y	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/aslcstyle.y	Fri Nov 11 19:14:16 2016 +0000
@@ -82,6 +82,13 @@
  *  13)     = += -= *= /= %= <<= >>= &= ^= |=
  */
 
+
+/*******************************************************************************
+ *
+ * Basic operations for math and logical expressions.
+ *
+ ******************************************************************************/
+
 Expression
 
     /* Unary operators */
@@ -140,33 +147,43 @@
     | TermArg PARSEOP_EXP_LOGICAL_OR    {$<n>$ = TrCreateLeafNode (PARSEOP_LOR);}
         TermArg                         {$$ = TrLinkChildren ($<n>3,2,$1,$4);}
 
-        /* Parentheses */
+    /* Parentheses */
 
     | '(' TermArg ')'                   { $$ = $2;}
 
-        /* Index term -- "= BUF1[5]" on right-hand side of an equals (source) */
+    /* Index term -- "= BUF1[5]" on right-hand side of an equals (source) */
 
-    | SuperName PARSEOP_EXP_INDEX_LEFT TermArg PARSEOP_EXP_INDEX_RIGHT
-                                        {$$ = TrCreateLeafNode (PARSEOP_INDEX);
+    | SuperName PARSEOP_EXP_INDEX_LEFT
+        TermArg PARSEOP_EXP_INDEX_RIGHT {$$ = TrCreateLeafNode (PARSEOP_INDEX);
                                         TrLinkChildren ($$,3,$1,$3,TrCreateNullTarget ());}
     ;
 
-        /* Index term -- "BUF1[5] = " on left-hand side of an equals (target) */
+    /* Index term -- "BUF1[5] = " on left-hand side of an equals (target) */
 
 IndexExpTerm
 
-    : SuperName PARSEOP_EXP_INDEX_LEFT TermArg PARSEOP_EXP_INDEX_RIGHT
-                                        {$$ = TrCreateLeafNode (PARSEOP_INDEX);
+    : SuperName PARSEOP_EXP_INDEX_LEFT
+        TermArg PARSEOP_EXP_INDEX_RIGHT {$$ = TrCreateLeafNode (PARSEOP_INDEX);
                                         TrLinkChildren ($$,3,$1,$3,TrCreateNullTarget ());}
     ;
 
+
+/*******************************************************************************
+ *
+ * All assignment-type operations -- math and logical. Includes simple
+ * assignment and compound assignments.
+ *
+ ******************************************************************************/
+
 EqualsTerm
 
-    /* All assignment-type operations */
+    /* Simple Store() operation */
 
     : SuperName PARSEOP_EXP_EQUALS
         TermArg                         {$$ = TrCreateAssignmentNode ($1, $3);}
 
+    /* Compound assignments -- Add (operand, operand, target) */
+
     | TermArg PARSEOP_EXP_ADD_EQ        {$<n>$ = TrCreateLeafNode (PARSEOP_ADD);}
         TermArg                         {$$ = TrLinkChildren ($<n>3,3,$1,$4,
                                             TrSetNodeFlags (TrCreateTargetOperand ($1, NULL), NODE_IS_TARGET));}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/aslhelp.c	Fri Nov 11 19:14:16 2016 +0000
@@ -0,0 +1,220 @@
+/******************************************************************************
+ *
+ * Module Name: aslhelp - iASL help screens
+ *
+ *****************************************************************************/
+
+/*
+ * Copyright (C) 2000 - 2016, Intel Corp.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions, and the following disclaimer,
+ *    without modification.
+ * 2. Redistributions in binary form must reproduce at minimum a disclaimer
+ *    substantially similar to the "NO WARRANTY" disclaimer below
+ *    ("Disclaimer") and any redistribution must be conditioned upon
+ *    including a substantially similar Disclaimer requirement for further
+ *    binary redistribution.
+ * 3. Neither the names of the above-listed copyright holders nor the names
+ *    of any contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ * Alternatively, this software may be distributed under the terms of the
+ * GNU General Public License ("GPL") version 2 as published by the Free
+ * Software Foundation.
+ *
+ * NO WARRANTY
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGES.
+ */
+
+#include "aslcompiler.h"
+#include "acapps.h"
+
+#define _COMPONENT          ACPI_COMPILER
+        ACPI_MODULE_NAME    ("aslhelp")
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    Usage
+ *
+ * PARAMETERS:  None
+ *
+ * RETURN:      None
+ *
+ * DESCRIPTION: Display option help message.
+ *              Optional items in square brackets.
+ *
+ ******************************************************************************/
+
+void
+Usage (
+    void)
+{
+    printf ("%s\n\n", ASL_COMPLIANCE);
+    ACPI_USAGE_HEADER ("iasl [Options] [Files]");
+
+    printf ("\nGeneral:\n");
+    ACPI_OPTION ("-@ <file>",       "Specify command file");
+    ACPI_OPTION ("-I <dir>",        "Specify additional include directory");
+    ACPI_OPTION ("-p <prefix>",     "Specify path/filename prefix for all output files");
+    ACPI_OPTION ("-v",              "Display compiler version");
+    ACPI_OPTION ("-vd",             "Display compiler build date and time");
+    ACPI_OPTION ("-vo",             "Enable optimization comments");
+    ACPI_OPTION ("-vs",             "Disable signon");
+
+    printf ("\nHelp:\n");
+    ACPI_OPTION ("-h",              "This message");
+    ACPI_OPTION ("-hc",             "Display operators allowed in constant expressions");
+    ACPI_OPTION ("-hd",             "Info for obtaining and disassembling binary ACPI tables");
+    ACPI_OPTION ("-hf",             "Display help for output filename generation");
+    ACPI_OPTION ("-hr",             "Display ACPI reserved method names");
+    ACPI_OPTION ("-ht",             "Display currently supported ACPI table names");
+
+    printf ("\nPreprocessor:\n");
+    ACPI_OPTION ("-D <symbol>",     "Define symbol for preprocessor use");
+    ACPI_OPTION ("-li",             "Create preprocessed output file (*.i)");
+    ACPI_OPTION ("-P",              "Preprocess only and create preprocessor output file (*.i)");
+    ACPI_OPTION ("-Pn",             "Disable preprocessor");
+
+    printf ("\nErrors, Warnings, and Remarks:\n");
+    ACPI_OPTION ("-va",             "Disable all errors/warnings/remarks");
+    ACPI_OPTION ("-ve",             "Report only errors (ignore warnings and remarks)");
+    ACPI_OPTION ("-vi",             "Less verbose errors and warnings for use with IDEs");
+    ACPI_OPTION ("-vr",             "Disable remarks");
+    ACPI_OPTION ("-vw <messageid>", "Disable specific warning or remark");
+    ACPI_OPTION ("-w <1|2|3>",      "Set warning reporting level");
+    ACPI_OPTION ("-we",             "Report warnings as errors");
+
+    printf ("\nAML Code Generation (*.aml):\n");
+    ACPI_OPTION ("-oa",             "Disable all optimizations (compatibility mode)");
+    ACPI_OPTION ("-of",             "Disable constant folding");
+    ACPI_OPTION ("-oi",             "Disable integer optimization to Zero/One/Ones");
+    ACPI_OPTION ("-on",             "Disable named reference string optimization");
+    ACPI_OPTION ("-ot",             "Disable typechecking");
+    ACPI_OPTION ("-cr",             "Disable Resource Descriptor error checking");
+    ACPI_OPTION ("-in",             "Ignore NoOp operators");
+    ACPI_OPTION ("-r <revision>",   "Override table header Revision (1-255)");
+
+    printf ("\nListings:\n");
+    ACPI_OPTION ("-l",              "Create mixed listing file (ASL source and AML) (*.lst)");
+    ACPI_OPTION ("-lm",             "Create hardware summary map file (*.map)");
+    ACPI_OPTION ("-ln",             "Create namespace file (*.nsp)");
+    ACPI_OPTION ("-ls",             "Create combined source file (expanded includes) (*.src)");
+    ACPI_OPTION ("-lx",             "Create cross-reference file (*.xrf)");
+
+    printf ("\nFirmware Support - C Output:\n");
+    ACPI_OPTION ("-tc",             "Create hex AML table in C (*.hex)");
+    ACPI_OPTION ("-sc",             "Create named hex AML arrays in C (*.c)");
+    ACPI_OPTION ("-ic",             "Create include file in C for -sc symbols (*.h)");
+    ACPI_OPTION ("-so",             "Create namespace AML offset table in C (*.offset.h)");
+
+    printf ("\nFirmware Support - Assembler Output:\n");
+    ACPI_OPTION ("-ta",             "Create hex AML table in assembler (*.hex)");
+    ACPI_OPTION ("-sa",             "Create named hex AML arrays in assembler (*.asm)");
+    ACPI_OPTION ("-ia",             "Create include file in assembler for -sa symbols (*.inc)");
+
+    printf ("\nFirmware Support - ASL Output:\n");
+    ACPI_OPTION ("-ts",             "Create hex AML table in ASL (Buffer object) (*.hex)");
+
+    printf ("\nData Table Compiler:\n");
+    ACPI_OPTION ("-G",              "Compile custom table that contains generic operators");
+    ACPI_OPTION ("-T <sig list>|ALL",   "Create ACPI table template/example files");
+    ACPI_OPTION ("-T <count>",      "Emit DSDT and <count> SSDTs to same file");
+    ACPI_OPTION ("-vt",             "Create verbose template files (full disassembly)");
+
+    printf ("\nAML Disassembler:\n");
+    ACPI_OPTION ("-d  <f1 f2 ...>", "Disassemble or decode binary ACPI tables to file (*.dsl)");
+    ACPI_OPTION ("",                "  (Optional, file type is automatically detected)");
+    ACPI_OPTION ("-da <f1 f2 ...>", "Disassemble multiple tables from single namespace");
+    ACPI_OPTION ("-db",             "Do not translate Buffers to Resource Templates");
+    ACPI_OPTION ("-dc <f1 f2 ...>", "Disassemble AML and immediately compile it");
+    ACPI_OPTION ("",                "  (Obtain DSDT from current system if no input file)");
+    ACPI_OPTION ("-df",             "Force disassembler to assume table contains valid AML");
+    ACPI_OPTION ("-dl",             "Emit legacy ASL code only (no C-style operators)");
+    ACPI_OPTION ("-e  <f1 f2 ...>", "Include ACPI table(s) for external symbol resolution");
+    ACPI_OPTION ("-fe <file>",      "Specify external symbol declaration file");
+    ACPI_OPTION ("-in",             "Ignore NoOp opcodes");
+    ACPI_OPTION ("-l",              "Disassemble to mixed ASL and AML code");
+    ACPI_OPTION ("-vt",             "Dump binary table data in hex format within output file");
+
+    printf ("\nDebug Options:\n");
+    ACPI_OPTION ("-bf",             "Create debug file (full output) (*.txt)");
+    ACPI_OPTION ("-bs",             "Create debug file (parse tree only) (*.txt)");
+    ACPI_OPTION ("-bp <depth>",     "Prune ASL parse tree");
+    ACPI_OPTION ("-bt <type>",      "Object type to be pruned from the parse tree");
+    ACPI_OPTION ("-f",              "Ignore errors, force creation of AML output file(s)");
+    ACPI_OPTION ("-m <size>",       "Set internal line buffer size (in Kbytes)");
+    ACPI_OPTION ("-n",              "Parse only, no output generation");
+    ACPI_OPTION ("-oc",             "Display compile times and statistics");
+    ACPI_OPTION ("-x <level>",      "Set debug level for trace output");
+    ACPI_OPTION ("-z",              "Do not insert new compiler ID for DataTables");
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    FilenameHelp
+ *
+ * PARAMETERS:  None
+ *
+ * RETURN:      None
+ *
+ * DESCRIPTION: Display help message for output filename generation
+ *
+ ******************************************************************************/
+
+void
+AslFilenameHelp (
+    void)
+{
+
+    printf ("\nAML output filename generation:\n");
+    printf ("  Output filenames are generated by appending an extension to a common\n");
+    printf ("  filename prefix. The filename prefix is obtained via one of the\n");
+    printf ("  following methods (in priority order):\n");
+    printf ("    1) The -p option specifies the prefix\n");
+    printf ("    2) The prefix of the AMLFileName in the ASL Definition Block\n");
+    printf ("    3) The prefix of the input filename\n");
+    printf ("\n");
+}
+
+/*******************************************************************************
+ *
+ * FUNCTION:    AslDisassemblyHelp
+ *
+ * PARAMETERS:  None
+ *
+ * RETURN:      None
+ *
+ * DESCRIPTION: Display help message for obtaining and disassembling AML/ASL
+ *              files.
+ *
+ ******************************************************************************/
+
+void
+AslDisassemblyHelp (
+    void)
+{
+
+    printf ("\nObtaining binary ACPI tables and disassembling to ASL source code.\n\n");
+    printf ("Use the following ACPICA toolchain:\n");
+    printf ("  AcpiDump: Dump all ACPI tables to a hex ascii file\n");
+    printf ("  AcpiXtract: Extract one or more binary ACPI tables from AcpiDump output\n");
+    printf ("  iASL -d <file>: Disassemble a binary ACPI table to ASL source code\n");
+    printf ("\n");
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/aslhelpers.y	Fri Nov 11 19:14:16 2016 +0000
@@ -0,0 +1,286 @@
+NoEcho('
+/******************************************************************************
+ *
+ * Module Name: aslhelpers.y - helper and option terms
+ *
+ *****************************************************************************/
+
+/*
+ * Copyright (C) 2000 - 2016, Intel Corp.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions, and the following disclaimer,
+ *    without modification.
+ * 2. Redistributions in binary form must reproduce at minimum a disclaimer
+ *    substantially similar to the "NO WARRANTY" disclaimer below
+ *    ("Disclaimer") and any redistribution must be conditioned upon
+ *    including a substantially similar Disclaimer requirement for further
+ *    binary redistribution.
+ * 3. Neither the names of the above-listed copyright holders nor the names
+ *    of any contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ * Alternatively, this software may be distributed under the terms of the
+ * GNU General Public License ("GPL") version 2 as published by the Free
+ * Software Foundation.
+ *
+ * NO WARRANTY
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGES.
+ */
+
+')
+
+
+/*******************************************************************************
+ *
+ * ASL Helper Terms
+ *
+ ******************************************************************************/
+
+OptionalBusMasterKeyword
+    : ','                                   {$$ = TrCreateLeafNode (
+                                                PARSEOP_BUSMASTERTYPE_MASTER);}
+    | ',' PARSEOP_BUSMASTERTYPE_MASTER      {$$ = TrCreateLeafNode (
+                                                PARSEOP_BUSMASTERTYPE_MASTER);}
+    | ',' PARSEOP_BUSMASTERTYPE_NOTMASTER   {$$ = TrCreateLeafNode (
+                                                PARSEOP_BUSMASTERTYPE_NOTMASTER);}
+    ;
+
+OptionalAccessAttribTerm
+    :                               {$$ = NULL;}
+    | ','                           {$$ = NULL;}
+    | ',' ByteConstExpr             {$$ = $2;}
+    | ',' AccessAttribKeyword       {$$ = $2;}
+    ;
+
+OptionalAccessSize
+    :                               {$$ = TrCreateValuedLeafNode (
+                                        PARSEOP_BYTECONST, 0);}
+    | ','                           {$$ = TrCreateValuedLeafNode (
+                                        PARSEOP_BYTECONST, 0);}
+    | ',' ByteConstExpr             {$$ = $2;}
+    ;
+
+OptionalAddressingMode
+    : ','                           {$$ = NULL;}
+    | ',' AddressingModeKeyword     {$$ = $2;}
+    ;
+
+OptionalAddressRange
+    :                               {$$ = NULL;}
+    | ','                           {$$ = NULL;}
+    | ',' AddressKeyword            {$$ = $2;}
+    ;
+
+OptionalBitsPerByte
+    : ','                           {$$ = NULL;}
+    | ',' BitsPerByteKeyword        {$$ = $2;}
+    ;
+
+OptionalBuffer_Last
+    :                               {$$ = NULL;}
+    | ','                           {$$ = NULL;}
+    | ',' RawDataBufferTerm         {$$ = $2;}
+    ;
+
+OptionalByteConstExpr
+    :                               {$$ = NULL;}
+    | ','                           {$$ = NULL;}
+    | ',' ByteConstExpr             {$$ = $2;}
+    ;
+
+OptionalDecodeType
+    : ','                           {$$ = NULL;}
+    | ',' DecodeKeyword             {$$ = $2;}
+    ;
+
+OptionalDevicePolarity
+    : ','                           {$$ = NULL;}
+    | ',' DevicePolarityKeyword     {$$ = $2;}
+    ;
+
+OptionalDWordConstExpr
+    :                               {$$ = NULL;}
+    | ','                           {$$ = NULL;}
+    | ',' DWordConstExpr            {$$ = $2;}
+    ;
+
+OptionalEndian
+    : ','                           {$$ = NULL;}
+    | ',' EndianKeyword             {$$ = $2;}
+    ;
+
+OptionalFlowControl
+    : ','                           {$$ = NULL;}
+    | ',' FlowControlKeyword        {$$ = $2;}
+    ;
+
+OptionalIoRestriction
+    : ','                           {$$ = NULL;}
+    | ',' IoRestrictionKeyword      {$$ = $2;}
+    ;
+
+OptionalListString
+    :                               {$$ = TrCreateValuedLeafNode (
+                                        PARSEOP_STRING_LITERAL,
+                                        ACPI_TO_INTEGER (""));}   /* Placeholder is a NULL string */
+    | ','                           {$$ = TrCreateValuedLeafNode (
+                                        PARSEOP_STRING_LITERAL,
+                                        ACPI_TO_INTEGER (""));}   /* Placeholder is a NULL string */
+    | ',' TermArg                   {$$ = $2;}
+    ;
+
+OptionalMaxType
+    : ','                           {$$ = NULL;}
+    | ',' MaxKeyword                {$$ = $2;}
+    ;
+
+OptionalMemType
+    : ','                           {$$ = NULL;}
+    | ',' MemTypeKeyword            {$$ = $2;}
+    ;
+
+OptionalMinType
+    : ','                           {$$ = NULL;}
+    | ',' MinKeyword                {$$ = $2;}
+    ;
+
+OptionalNameString
+    :                               {$$ = NULL;}
+    | ','                           {$$ = NULL;}
+    | ',' NameString                {$$ = $2;}
+    ;
+
+OptionalNameString_Last
+    :                               {$$ = NULL;}
+    | ','                           {$$ = NULL;}
+    | ',' NameString                {$$ = $2;}
+    ;
+
+OptionalNameString_First
+    :                               {$$ = TrCreateLeafNode (
+                                        PARSEOP_ZERO);}
+    | NameString                    {$$ = $1;}
+    ;
+
+OptionalObjectTypeKeyword
+    :                               {$$ = TrCreateLeafNode (
+                                        PARSEOP_OBJECTTYPE_UNK);}
+    | ',' ObjectTypeKeyword         {$$ = $2;}
+    ;
+
+OptionalParityType
+    : ','                           {$$ = NULL;}
+    | ',' ParityTypeKeyword         {$$ = $2;}
+    ;
+
+OptionalQWordConstExpr
+    :                               {$$ = NULL;}
+    | ','                           {$$ = NULL;}
+    | ',' QWordConstExpr            {$$ = $2;}
+    ;
+
+OptionalRangeType
+    : ','                           {$$ = NULL;}
+    | ',' RangeTypeKeyword          {$$ = $2;}
+    ;
+
+OptionalReadWriteKeyword
+    :                                   {$$ = TrCreateLeafNode (
+                                            PARSEOP_READWRITETYPE_BOTH);}
+    | PARSEOP_READWRITETYPE_BOTH        {$$ = TrCreateLeafNode (
+                                            PARSEOP_READWRITETYPE_BOTH);}
+    | PARSEOP_READWRITETYPE_READONLY    {$$ = TrCreateLeafNode (
+                                            PARSEOP_READWRITETYPE_READONLY);}
+    ;
+
+OptionalResourceType_First
+    :                               {$$ = TrCreateLeafNode (
+                                        PARSEOP_RESOURCETYPE_CONSUMER);}
+    | ResourceTypeKeyword           {$$ = $1;}
+    ;
+
+OptionalResourceType
+    :                               {$$ = TrCreateLeafNode (
+                                        PARSEOP_RESOURCETYPE_CONSUMER);}
+    | ','                           {$$ = TrCreateLeafNode (
+                                        PARSEOP_RESOURCETYPE_CONSUMER);}
+    | ',' ResourceTypeKeyword       {$$ = $2;}
+    ;
+
+OptionalSlaveMode
+    : ','                           {$$ = NULL;}
+    | ',' SlaveModeKeyword          {$$ = $2;}
+    ;
+
+OptionalShareType
+    :                               {$$ = NULL;}
+    | ','                           {$$ = NULL;}
+    | ',' ShareTypeKeyword          {$$ = $2;}
+    ;
+
+OptionalShareType_First
+    :                               {$$ = NULL;}
+    | ShareTypeKeyword              {$$ = $1;}
+    ;
+
+OptionalStopBits
+    : ','                           {$$ = NULL;}
+    | ',' StopBitsKeyword           {$$ = $2;}
+    ;
+
+OptionalStringData
+    :                               {$$ = NULL;}
+    | ','                           {$$ = NULL;}
+    | ',' StringData                {$$ = $2;}
+    ;
+
+OptionalTranslationType_Last
+    :                               {$$ = NULL;}
+    | ','                           {$$ = NULL;}
+    | ',' TranslationKeyword        {$$ = $2;}
+    ;
+
+OptionalType
+    :                               {$$ = NULL;}
+    | ','                           {$$ = NULL;}
+    | ',' TypeKeyword               {$$ = $2;}
+    ;
+
+OptionalType_Last
+    :                               {$$ = NULL;}
+    | ','                           {$$ = NULL;}
+    | ',' TypeKeyword               {$$ = $2;}
+    ;
+
+OptionalWireMode
+    : ','                           {$$ = NULL;}
+    | ',' WireModeKeyword           {$$ = $2;}
+    ;
+
+OptionalWordConstExpr
+    : ','                           {$$ = NULL;}
+    | ',' WordConstExpr             {$$ = $2;}
+    ;
+
+OptionalXferSize
+    :                               {$$ = TrCreateValuedLeafNode (
+                                        PARSEOP_XFERSIZE_32, 2);}
+    | ','                           {$$ = TrCreateValuedLeafNode (
+                                        PARSEOP_XFERSIZE_32, 2);}
+    | ',' XferSizeKeyword           {$$ = $2;}
+    ;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/aslkeywords.y	Fri Nov 11 19:14:16 2016 +0000
@@ -0,0 +1,352 @@
+NoEcho('
+/******************************************************************************
+ *
+ * Module Name: aslkeywords.y - Rules for resource descriptor keywords
+ *
+ *****************************************************************************/
+
+/*
+ * Copyright (C) 2000 - 2016, Intel Corp.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions, and the following disclaimer,
+ *    without modification.
+ * 2. Redistributions in binary form must reproduce at minimum a disclaimer
+ *    substantially similar to the "NO WARRANTY" disclaimer below
+ *    ("Disclaimer") and any redistribution must be conditioned upon
+ *    including a substantially similar Disclaimer requirement for further
+ *    binary redistribution.
+ * 3. Neither the names of the above-listed copyright holders nor the names
+ *    of any contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ * Alternatively, this software may be distributed under the terms of the
+ * GNU General Public License ("GPL") version 2 as published by the Free
+ * Software Foundation.
+ *
+ * NO WARRANTY
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGES.
+ */
+
+')
+
+/*******************************************************************************
+ *
+ * ASL Parameter Keyword Terms
+ *
+ ******************************************************************************/
+
+AccessAttribKeyword
+    : PARSEOP_ACCESSATTRIB_BLOCK            {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK);}
+    | PARSEOP_ACCESSATTRIB_BLOCK_CALL       {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK_CALL);}
+    | PARSEOP_ACCESSATTRIB_BYTE             {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BYTE);}
+    | PARSEOP_ACCESSATTRIB_QUICK            {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_QUICK );}
+    | PARSEOP_ACCESSATTRIB_SND_RCV          {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_SND_RCV);}
+    | PARSEOP_ACCESSATTRIB_WORD             {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD);}
+    | PARSEOP_ACCESSATTRIB_WORD_CALL        {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD_CALL);}
+    | PARSEOP_ACCESSATTRIB_MULTIBYTE '('    {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_MULTIBYTE);}
+        ByteConst
+        ')'                                 {$$ = TrLinkChildren ($<n>3,1,$4);}
+    | PARSEOP_ACCESSATTRIB_RAW_BYTES '('    {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_RAW_BYTES);}
+        ByteConst
+        ')'                                 {$$ = TrLinkChildren ($<n>3,1,$4);}
+    | PARSEOP_ACCESSATTRIB_RAW_PROCESS '('  {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_RAW_PROCESS);}
+        ByteConst
+        ')'                                 {$$ = TrLinkChildren ($<n>3,1,$4);}
+    ;
+
+AccessTypeKeyword
+    : PARSEOP_ACCESSTYPE_ANY                {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_ANY);}
+    | PARSEOP_ACCESSTYPE_BYTE               {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BYTE);}
+    | PARSEOP_ACCESSTYPE_WORD               {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_WORD);}
+    | PARSEOP_ACCESSTYPE_DWORD              {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_DWORD);}
+    | PARSEOP_ACCESSTYPE_QWORD              {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_QWORD);}
+    | PARSEOP_ACCESSTYPE_BUF                {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BUF);}
+    ;
+
+AddressingModeKeyword
+    : PARSEOP_ADDRESSINGMODE_7BIT           {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_7BIT);}
+    | PARSEOP_ADDRESSINGMODE_10BIT          {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_10BIT);}
+    ;
+
+AddressKeyword
+    : PARSEOP_ADDRESSTYPE_MEMORY            {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_MEMORY);}
+    | PARSEOP_ADDRESSTYPE_RESERVED          {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_RESERVED);}
+    | PARSEOP_ADDRESSTYPE_NVS               {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_NVS);}
+    | PARSEOP_ADDRESSTYPE_ACPI              {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_ACPI);}
+    ;
+
+AddressSpaceKeyword
+    : ByteConst                             {$$ = UtCheckIntegerRange ($1, 0x0A, 0xFF);}
+    | RegionSpaceKeyword                    {}
+    ;
+
+BitsPerByteKeyword
+    : PARSEOP_BITSPERBYTE_FIVE              {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_FIVE);}
+    | PARSEOP_BITSPERBYTE_SIX               {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_SIX);}
+    | PARSEOP_BITSPERBYTE_SEVEN             {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_SEVEN);}
+    | PARSEOP_BITSPERBYTE_EIGHT             {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_EIGHT);}
+    | PARSEOP_BITSPERBYTE_NINE              {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_NINE);}
+    ;
+
+ClockPhaseKeyword
+    : PARSEOP_CLOCKPHASE_FIRST              {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_FIRST);}
+    | PARSEOP_CLOCKPHASE_SECOND             {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_SECOND);}
+    ;
+
+ClockPolarityKeyword
+    : PARSEOP_CLOCKPOLARITY_LOW             {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_LOW);}
+    | PARSEOP_CLOCKPOLARITY_HIGH            {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_HIGH);}
+    ;
+
+DecodeKeyword
+    : PARSEOP_DECODETYPE_POS                {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_POS);}
+    | PARSEOP_DECODETYPE_SUB                {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_SUB);}
+    ;
+
+DevicePolarityKeyword
+    : PARSEOP_DEVICEPOLARITY_LOW            {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_LOW);}
+    | PARSEOP_DEVICEPOLARITY_HIGH           {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_HIGH);}
+    ;
+
+DMATypeKeyword
+    : PARSEOP_DMATYPE_A                     {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_A);}
+    | PARSEOP_DMATYPE_COMPATIBILITY         {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_COMPATIBILITY);}
+    | PARSEOP_DMATYPE_B                     {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_B);}
+    | PARSEOP_DMATYPE_F                     {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_F);}
+    ;
+
+EndianKeyword
+    : PARSEOP_ENDIAN_LITTLE                 {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_LITTLE);}
+    | PARSEOP_ENDIAN_BIG                    {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_BIG);}
+    ;
+
+FlowControlKeyword
+    : PARSEOP_FLOWCONTROL_HW                {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_HW);}
+    | PARSEOP_FLOWCONTROL_NONE              {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_NONE);}
+    | PARSEOP_FLOWCONTROL_SW                {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_SW);}
+    ;
+
+InterruptLevel
+    : PARSEOP_INTLEVEL_ACTIVEBOTH           {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEBOTH);}
+    | PARSEOP_INTLEVEL_ACTIVEHIGH           {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEHIGH);}
+    | PARSEOP_INTLEVEL_ACTIVELOW            {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVELOW);}
+    ;
+
+InterruptTypeKeyword
+    : PARSEOP_INTTYPE_EDGE                  {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_EDGE);}
+    | PARSEOP_INTTYPE_LEVEL                 {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_LEVEL);}
+    ;
+
+IODecodeKeyword
+    : PARSEOP_IODECODETYPE_16               {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_16);}
+    | PARSEOP_IODECODETYPE_10               {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_10);}
+    ;
+
+IoRestrictionKeyword
+    : PARSEOP_IORESTRICT_IN                 {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_IN);}
+    | PARSEOP_IORESTRICT_OUT                {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_OUT);}
+    | PARSEOP_IORESTRICT_NONE               {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_NONE);}
+    | PARSEOP_IORESTRICT_PRESERVE           {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_PRESERVE);}
+    ;
+
+LockRuleKeyword
+    : PARSEOP_LOCKRULE_LOCK                 {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_LOCK);}
+    | PARSEOP_LOCKRULE_NOLOCK               {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_NOLOCK);}
+    ;
+
+MatchOpKeyword
+    : PARSEOP_MATCHTYPE_MTR                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MTR);}
+    | PARSEOP_MATCHTYPE_MEQ                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MEQ);}
+    | PARSEOP_MATCHTYPE_MLE                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLE);}
+    | PARSEOP_MATCHTYPE_MLT                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLT);}
+    | PARSEOP_MATCHTYPE_MGE                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGE);}
+    | PARSEOP_MATCHTYPE_MGT                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGT);}
+    ;
+
+MaxKeyword
+    : PARSEOP_MAXTYPE_FIXED                 {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_FIXED);}
+    | PARSEOP_MAXTYPE_NOTFIXED              {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_NOTFIXED);}
+    ;
+
+MemTypeKeyword
+    : PARSEOP_MEMTYPE_CACHEABLE             {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_CACHEABLE);}
+    | PARSEOP_MEMTYPE_WRITECOMBINING        {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_WRITECOMBINING);}
+    | PARSEOP_MEMTYPE_PREFETCHABLE          {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_PREFETCHABLE);}
+    | PARSEOP_MEMTYPE_NONCACHEABLE          {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_NONCACHEABLE);}
+    ;
+
+MinKeyword
+    : PARSEOP_MINTYPE_FIXED                 {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_FIXED);}
+    | PARSEOP_MINTYPE_NOTFIXED              {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_NOTFIXED);}
+    ;
+
+ObjectTypeKeyword
+    : PARSEOP_OBJECTTYPE_UNK                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
+    | PARSEOP_OBJECTTYPE_INT                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_INT);}
+    | PARSEOP_OBJECTTYPE_STR                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_STR);}
+    | PARSEOP_OBJECTTYPE_BUF                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BUF);}
+    | PARSEOP_OBJECTTYPE_PKG                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PKG);}
+    | PARSEOP_OBJECTTYPE_FLD                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_FLD);}
+    | PARSEOP_OBJECTTYPE_DEV                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DEV);}
+    | PARSEOP_OBJECTTYPE_EVT                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_EVT);}
+    | PARSEOP_OBJECTTYPE_MTH                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTH);}
+    | PARSEOP_OBJECTTYPE_MTX                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTX);}
+    | PARSEOP_OBJECTTYPE_OPR                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_OPR);}
+    | PARSEOP_OBJECTTYPE_POW                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_POW);}
+    | PARSEOP_OBJECTTYPE_PRO                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PRO);}
+    | PARSEOP_OBJECTTYPE_THZ                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_THZ);}
+    | PARSEOP_OBJECTTYPE_BFF                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BFF);}
+    | PARSEOP_OBJECTTYPE_DDB                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DDB);}
+    ;
+
+ParityTypeKeyword
+    : PARSEOP_PARITYTYPE_SPACE              {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_SPACE);}
+    | PARSEOP_PARITYTYPE_MARK               {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_MARK);}
+    | PARSEOP_PARITYTYPE_ODD                {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_ODD);}
+    | PARSEOP_PARITYTYPE_EVEN               {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_EVEN);}
+    | PARSEOP_PARITYTYPE_NONE               {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_NONE);}
+    ;
+
+PinConfigByte
+    : PinConfigKeyword                      {$$ = $1;}
+    | ByteConstExpr                         {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
+    ;
+
+PinConfigKeyword
+    : PARSEOP_PIN_NOPULL                    {$$ = TrCreateLeafNode (PARSEOP_PIN_NOPULL);}
+    | PARSEOP_PIN_PULLDOWN                  {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLDOWN);}
+    | PARSEOP_PIN_PULLUP                    {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLUP);}
+    | PARSEOP_PIN_PULLDEFAULT               {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLDEFAULT);}
+    ;
+
+PldKeyword
+    : PARSEOP_PLD_REVISION                  {$$ = TrCreateLeafNode (PARSEOP_PLD_REVISION);}
+    | PARSEOP_PLD_IGNORECOLOR               {$$ = TrCreateLeafNode (PARSEOP_PLD_IGNORECOLOR);}
+    | PARSEOP_PLD_RED                       {$$ = TrCreateLeafNode (PARSEOP_PLD_RED);}
+    | PARSEOP_PLD_GREEN                     {$$ = TrCreateLeafNode (PARSEOP_PLD_GREEN);}
+    | PARSEOP_PLD_BLUE                      {$$ = TrCreateLeafNode (PARSEOP_PLD_BLUE);}
+    | PARSEOP_PLD_WIDTH                     {$$ = TrCreateLeafNode (PARSEOP_PLD_WIDTH);}
+    | PARSEOP_PLD_HEIGHT                    {$$ = TrCreateLeafNode (PARSEOP_PLD_HEIGHT);}
+    | PARSEOP_PLD_USERVISIBLE               {$$ = TrCreateLeafNode (PARSEOP_PLD_USERVISIBLE);}
+    | PARSEOP_PLD_DOCK                      {$$ = TrCreateLeafNode (PARSEOP_PLD_DOCK);}
+    | PARSEOP_PLD_LID                       {$$ = TrCreateLeafNode (PARSEOP_PLD_LID);}
+    | PARSEOP_PLD_PANEL                     {$$ = TrCreateLeafNode (PARSEOP_PLD_PANEL);}
+    | PARSEOP_PLD_VERTICALPOSITION          {$$ = TrCreateLeafNode (PARSEOP_PLD_VERTICALPOSITION);}
+    | PARSEOP_PLD_HORIZONTALPOSITION        {$$ = TrCreateLeafNode (PARSEOP_PLD_HORIZONTALPOSITION);}
+    | PARSEOP_PLD_SHAPE                     {$$ = TrCreateLeafNode (PARSEOP_PLD_SHAPE);}
+    | PARSEOP_PLD_GROUPORIENTATION          {$$ = TrCreateLeafNode (PARSEOP_PLD_GROUPORIENTATION);}
+    | PARSEOP_PLD_GROUPTOKEN                {$$ = TrCreateLeafNode (PARSEOP_PLD_GROUPTOKEN);}
+    | PARSEOP_PLD_GROUPPOSITION             {$$ = TrCreateLeafNode (PARSEOP_PLD_GROUPPOSITION);}
+    | PARSEOP_PLD_BAY                       {$$ = TrCreateLeafNode (PARSEOP_PLD_BAY);}
+    | PARSEOP_PLD_EJECTABLE                 {$$ = TrCreateLeafNode (PARSEOP_PLD_EJECTABLE);}
+    | PARSEOP_PLD_EJECTREQUIRED             {$$ = TrCreateLeafNode (PARSEOP_PLD_EJECTREQUIRED);}
+    | PARSEOP_PLD_CABINETNUMBER             {$$ = TrCreateLeafNode (PARSEOP_PLD_CABINETNUMBER);}
+    | PARSEOP_PLD_CARDCAGENUMBER            {$$ = TrCreateLeafNode (PARSEOP_PLD_CARDCAGENUMBER);}
+    | PARSEOP_PLD_REFERENCE                 {$$ = TrCreateLeafNode (PARSEOP_PLD_REFERENCE);}
+    | PARSEOP_PLD_ROTATION                  {$$ = TrCreateLeafNode (PARSEOP_PLD_ROTATION);}
+    | PARSEOP_PLD_ORDER                     {$$ = TrCreateLeafNode (PARSEOP_PLD_ORDER);}
+    | PARSEOP_PLD_RESERVED                  {$$ = TrCreateLeafNode (PARSEOP_PLD_RESERVED);}
+    | PARSEOP_PLD_VERTICALOFFSET            {$$ = TrCreateLeafNode (PARSEOP_PLD_VERTICALOFFSET);}
+    | PARSEOP_PLD_HORIZONTALOFFSET          {$$ = TrCreateLeafNode (PARSEOP_PLD_HORIZONTALOFFSET);}
+    ;
+
+RangeTypeKeyword
+    : PARSEOP_RANGETYPE_ISAONLY             {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ISAONLY);}
+    | PARSEOP_RANGETYPE_NONISAONLY          {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_NONISAONLY);}
+    | PARSEOP_RANGETYPE_ENTIRE              {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ENTIRE);}
+    ;
+
+RegionSpaceKeyword
+    : PARSEOP_REGIONSPACE_IO                {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IO);}
+    | PARSEOP_REGIONSPACE_MEM               {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_MEM);}
+    | PARSEOP_REGIONSPACE_PCI               {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCI);}
+    | PARSEOP_REGIONSPACE_EC                {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_EC);}
+    | PARSEOP_REGIONSPACE_SMBUS             {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_SMBUS);}
+    | PARSEOP_REGIONSPACE_CMOS              {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_CMOS);}
+    | PARSEOP_REGIONSPACE_PCIBAR            {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCIBAR);}
+    | PARSEOP_REGIONSPACE_IPMI              {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IPMI);}
+    | PARSEOP_REGIONSPACE_GPIO              {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_GPIO);}
+    | PARSEOP_REGIONSPACE_GSBUS             {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_GSBUS);}
+    | PARSEOP_REGIONSPACE_PCC               {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCC);}
+    | PARSEOP_REGIONSPACE_FFIXEDHW          {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_FFIXEDHW);}
+    ;
+
+ResourceTypeKeyword
+    : PARSEOP_RESOURCETYPE_CONSUMER         {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
+    | PARSEOP_RESOURCETYPE_PRODUCER         {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_PRODUCER);}
+    ;
+
+SerializeRuleKeyword
+    : PARSEOP_SERIALIZERULE_SERIAL          {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_SERIAL);}
+    | PARSEOP_SERIALIZERULE_NOTSERIAL       {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL);}
+    ;
+
+ShareTypeKeyword
+    : PARSEOP_SHARETYPE_SHARED              {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHARED);}
+    | PARSEOP_SHARETYPE_EXCLUSIVE           {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVE);}
+    | PARSEOP_SHARETYPE_SHAREDWAKE          {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHAREDWAKE);}
+    | PARSEOP_SHARETYPE_EXCLUSIVEWAKE       {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVEWAKE);}
+   ;
+
+SlaveModeKeyword
+    : PARSEOP_SLAVEMODE_CONTROLLERINIT      {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_CONTROLLERINIT);}
+    | PARSEOP_SLAVEMODE_DEVICEINIT          {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_DEVICEINIT);}
+    ;
+
+StopBitsKeyword
+    : PARSEOP_STOPBITS_TWO                  {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_TWO);}
+    | PARSEOP_STOPBITS_ONEPLUSHALF          {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ONEPLUSHALF);}
+    | PARSEOP_STOPBITS_ONE                  {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ONE);}
+    | PARSEOP_STOPBITS_ZERO                 {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ZERO);}
+    ;
+
+TranslationKeyword
+    : PARSEOP_TRANSLATIONTYPE_SPARSE        {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_SPARSE);}
+    | PARSEOP_TRANSLATIONTYPE_DENSE         {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_DENSE);}
+    ;
+
+TypeKeyword
+    : PARSEOP_TYPE_TRANSLATION              {$$ = TrCreateLeafNode (PARSEOP_TYPE_TRANSLATION);}
+    | PARSEOP_TYPE_STATIC                   {$$ = TrCreateLeafNode (PARSEOP_TYPE_STATIC);}
+    ;
+
+UpdateRuleKeyword
+    : PARSEOP_UPDATERULE_PRESERVE           {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_PRESERVE);}
+    | PARSEOP_UPDATERULE_ONES               {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ONES);}
+    | PARSEOP_UPDATERULE_ZEROS              {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ZEROS);}
+    ;
+
+WireModeKeyword
+    : PARSEOP_WIREMODE_FOUR                 {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_FOUR);}
+    | PARSEOP_WIREMODE_THREE                {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_THREE);}
+    ;
+
+XferSizeKeyword
+    : PARSEOP_XFERSIZE_8                    {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_8,   0);}
+    | PARSEOP_XFERSIZE_16                   {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_16,  1);}
+    | PARSEOP_XFERSIZE_32                   {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32,  2);}
+    | PARSEOP_XFERSIZE_64                   {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_64,  3);}
+    | PARSEOP_XFERSIZE_128                  {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_128, 4);}
+    | PARSEOP_XFERSIZE_256                  {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_256, 5);}
+    ;
+
+XferTypeKeyword
+    : PARSEOP_XFERTYPE_8                    {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8);}
+    | PARSEOP_XFERTYPE_8_16                 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8_16);}
+    | PARSEOP_XFERTYPE_16                   {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_16);}
+    ;
--- a/sys/external/bsd/acpica/dist/compiler/aslmain.c	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/aslmain.c	Fri Nov 11 19:14:16 2016 +0000
@@ -76,137 +76,112 @@
 
 /*******************************************************************************
  *
- * FUNCTION:    Usage
+ * FUNCTION:    main
  *
- * PARAMETERS:  None
+ * PARAMETERS:  Standard argc/argv
  *
- * RETURN:      None
+ * RETURN:      Program termination code
  *
- * DESCRIPTION: Display option help message.
- *              Optional items in square brackets.
+ * DESCRIPTION: C main routine for the iASL Compiler/Disassembler. Process
+ *  command line options and begin the compile/disassembly for each file on
+ *  the command line (wildcards supported).
  *
  ******************************************************************************/
 
-void
-Usage (
-    void)
+int ACPI_SYSTEM_XFACE
+main (
+    int                     argc,
+    char                    **argv)
 {
-    printf ("%s\n\n", ASL_COMPLIANCE);
-    ACPI_USAGE_HEADER ("iasl [Options] [Files]");
-
-    printf ("\nGeneral:\n");
-    ACPI_OPTION ("-@ <file>",       "Specify command file");
-    ACPI_OPTION ("-I <dir>",        "Specify additional include directory");
-    ACPI_OPTION ("-T <sig list>|ALL",   "Create ACPI table template/example files");
-    ACPI_OPTION ("-T <count>",      "Emit DSDT and <count> SSDTs to same file");
-    ACPI_OPTION ("-p <prefix>",     "Specify path/filename prefix for all output files");
-    ACPI_OPTION ("-v",              "Display compiler version");
-    ACPI_OPTION ("-vo",             "Enable optimization comments");
-    ACPI_OPTION ("-vs",             "Disable signon");
-
-    printf ("\nHelp:\n");
-    ACPI_OPTION ("-h",              "This message");
-    ACPI_OPTION ("-hc",             "Display operators allowed in constant expressions");
-    ACPI_OPTION ("-hf",             "Display help for output filename generation");
-    ACPI_OPTION ("-hr",             "Display ACPI reserved method names");
-    ACPI_OPTION ("-ht",             "Display currently supported ACPI table names");
-
-    printf ("\nPreprocessor:\n");
-    ACPI_OPTION ("-D <symbol>",     "Define symbol for preprocessor use");
-    ACPI_OPTION ("-li",             "Create preprocessed output file (*.i)");
-    ACPI_OPTION ("-P",              "Preprocess only and create preprocessor output file (*.i)");
-    ACPI_OPTION ("-Pn",             "Disable preprocessor");
-
-    printf ("\nErrors, Warnings, and Remarks:\n");
-    ACPI_OPTION ("-va",             "Disable all errors/warnings/remarks");
-    ACPI_OPTION ("-ve",             "Report only errors (ignore warnings and remarks)");
-    ACPI_OPTION ("-vi",             "Less verbose errors and warnings for use with IDEs");
-    ACPI_OPTION ("-vr",             "Disable remarks");
-    ACPI_OPTION ("-vw <messageid>", "Disable specific warning or remark");
-    ACPI_OPTION ("-w1 -w2 -w3",     "Set warning reporting level");
-    ACPI_OPTION ("-we",             "Report warnings as errors");
-
-    printf ("\nAML Code Generation (*.aml):\n");
-    ACPI_OPTION ("-oa",             "Disable all optimizations (compatibility mode)");
-    ACPI_OPTION ("-of",             "Disable constant folding");
-    ACPI_OPTION ("-oi",             "Disable integer optimization to Zero/One/Ones");
-    ACPI_OPTION ("-on",             "Disable named reference string optimization");
-    ACPI_OPTION ("-ot",             "Disable typechecking");
-    ACPI_OPTION ("-cr",             "Disable Resource Descriptor error checking");
-    ACPI_OPTION ("-in",             "Ignore NoOp operators");
-    ACPI_OPTION ("-r <revision>",   "Override table header Revision (1-255)");
-
-    printf ("\nOptional Source Code Output Files:\n");
-    ACPI_OPTION ("-sc -sa",         "Create source file in C or assembler (*.c or *.asm)");
-    ACPI_OPTION ("-ic -ia",         "Create include file in C or assembler (*.h or *.inc)");
-    ACPI_OPTION ("-tc -ta -ts",     "Create hex AML table in C, assembler, or ASL (*.hex)");
-    ACPI_OPTION ("-so",             "Create offset table in C (*.offset.h)");
-
-    printf ("\nOptional Listing Files:\n");
-    ACPI_OPTION ("-l",              "Create mixed listing file (ASL source and AML) (*.lst)");
-    ACPI_OPTION ("-lm",             "Create hardware summary map file (*.map)");
-    ACPI_OPTION ("-ln",             "Create namespace file (*.nsp)");
-    ACPI_OPTION ("-ls",             "Create combined source file (expanded includes) (*.src)");
-    ACPI_OPTION ("-lx",             "Create cross-reference file (*.xrf)");
-
-    printf ("\nData Table Compiler:\n");
-    ACPI_OPTION ("-G",              "Compile custom table that contains generic operators");
-    ACPI_OPTION ("-vt",             "Create verbose template files (full disassembly)");
-
-    printf ("\nAML Disassembler:\n");
-    ACPI_OPTION ("-d  <f1 f2 ...>", "Disassemble or decode binary ACPI tables to file (*.dsl)");
-    ACPI_OPTION ("",                "  (Optional, file type is automatically detected)");
-    ACPI_OPTION ("-da <f1 f2 ...>", "Disassemble multiple tables from single namespace");
-    ACPI_OPTION ("-db",             "Do not translate Buffers to Resource Templates");
-    ACPI_OPTION ("-dc <f1 f2 ...>", "Disassemble AML and immediately compile it");
-    ACPI_OPTION ("",                "  (Obtain DSDT from current system if no input file)");
-    ACPI_OPTION ("-df",             "Force disassembler to assume table contains valid AML");
-    ACPI_OPTION ("-dl",             "Emit legacy ASL code only (no C-style operators)");
-    ACPI_OPTION ("-e  <f1 f2 ...>", "Include ACPI table(s) for external symbol resolution");
-    ACPI_OPTION ("-fe <file>",      "Specify external symbol declaration file");
-    ACPI_OPTION ("-in",             "Ignore NoOp opcodes");
-    ACPI_OPTION ("-l",              "Disassemble to mixed ASL and AML code");
-    ACPI_OPTION ("-vt",             "Dump binary table data in hex format within output file");
-
-    printf ("\nDebug Options:\n");
-    ACPI_OPTION ("-bf",             "Create debug file (full output) (*.txt)");
-    ACPI_OPTION ("-bs",             "Create debug file (parse tree only) (*.txt)");
-    ACPI_OPTION ("-bp <depth>",     "Prune ASL parse tree");
-    ACPI_OPTION ("-bt <type>",      "Object type to be pruned from the parse tree");
-    ACPI_OPTION ("-f",              "Ignore errors, force creation of AML output file(s)");
-    ACPI_OPTION ("-m <size>",       "Set internal line buffer size (in Kbytes)");
-    ACPI_OPTION ("-n",              "Parse only, no output generation");
-    ACPI_OPTION ("-oc",             "Display compile times and statistics");
-    ACPI_OPTION ("-x <level>",      "Set debug level for trace output");
-    ACPI_OPTION ("-z",              "Do not insert new compiler ID for DataTables");
-}
+    ACPI_STATUS             Status;
+    int                     Index1;
+    int                     Index2;
+    int                     ReturnStatus = 0;
 
 
-/*******************************************************************************
- *
- * FUNCTION:    FilenameHelp
- *
- * PARAMETERS:  None
- *
- * RETURN:      None
- *
- * DESCRIPTION: Display help message for output filename generation
- *
- ******************************************************************************/
+    /*
+     * Big-endian machines are not currently supported. ACPI tables must
+     * be little-endian, and support for big-endian machines needs to
+     * be implemented.
+     */
+    if (UtIsBigEndianMachine ())
+    {
+        fprintf (stderr,
+            "iASL is not currently supported on big-endian machines.\n");
+        return (-1);
+    }
+
+    AcpiOsInitialize ();
+    ACPI_DEBUG_INITIALIZE (); /* For debug version only */
+
+    /* Initialize preprocessor and compiler before command line processing */
+
+    signal (SIGINT, AslSignalHandler);
+    AcpiGbl_ExternalFileList = NULL;
+    AcpiDbgLevel = 0;
+    PrInitializePreprocessor ();
+    AslInitialize ();
+
+    Index1 = Index2 =
+        AslCommandLine (argc, argv);
+
+    /* Allocate the line buffer(s), must be after command line */
+
+    Gbl_LineBufferSize /= 2;
+    UtExpandLineBuffers ();
+
+    /* Perform global actions first/only */
 
-void
-AslFilenameHelp (
-    void)
-{
+    if (Gbl_DisassembleAll)
+    {
+        while (argv[Index1])
+        {
+            Status = AcpiDmAddToExternalFileList (argv[Index1]);
+            if (ACPI_FAILURE (Status))
+            {
+                return (-1);
+            }
+
+            Index1++;
+        }
+    }
+
+    /* Process each pathname/filename in the list, with possible wildcards */
 
-    printf ("\nAML output filename generation:\n");
-    printf ("  Output filenames are generated by appending an extension to a common\n");
-    printf ("  filename prefix. The filename prefix is obtained via one of the\n");
-    printf ("  following methods (in priority order):\n");
-    printf ("    1) The -p option specifies the prefix\n");
-    printf ("    2) The prefix of the AMLFileName in the ASL Definition Block\n");
-    printf ("    3) The prefix of the input filename\n");
-    printf ("\n");
+    while (argv[Index2])
+    {
+        /*
+         * If -p not specified, we will use the input filename as the
+         * output filename prefix
+         */
+        if (Gbl_UseDefaultAmlFilename)
+        {
+            Gbl_OutputFilenamePrefix = argv[Index2];
+            UtConvertBackslashes (Gbl_OutputFilenamePrefix);
+        }
+
+        Status = AslDoOneFile (argv[Index2]);
+        if (ACPI_FAILURE (Status))
+        {
+            ReturnStatus = -1;
+            goto CleanupAndExit;
+        }
+
+        Index2++;
+    }
+
+
+CleanupAndExit:
+
+    UtFreeLineBuffers ();
+    AslParserCleanup ();
+
+    if (AcpiGbl_ExternalFileList)
+    {
+        AcpiDmClearExternalFileList();
+    }
+
+    return (ReturnStatus);
 }
 
 
@@ -292,112 +267,3 @@
     Gbl_Files[ASL_FILE_STDERR].Handle   = stderr;
     Gbl_Files[ASL_FILE_STDERR].Filename = "STDERR";
 }
-
-
-/*******************************************************************************
- *
- * FUNCTION:    main
- *
- * PARAMETERS:  Standard argc/argv
- *
- * RETURN:      Program termination code
- *
- * DESCRIPTION: C main routine for the Asl Compiler. Handle command line
- *              options and begin the compile for each file on the command line
- *
- ******************************************************************************/
-
-int ACPI_SYSTEM_XFACE
-main (
-    int                     argc,
-    char                    **argv)
-{
-    ACPI_STATUS             Status;
-    int                     Index1;
-    int                     Index2;
-    int                     ReturnStatus = 0;
-
-
-    /*
-     * Big-endian machines are not currently supported. ACPI tables must
-     * be little-endian, and support for big-endian machines needs to
-     * be implemented.
-     */
-    if (UtIsBigEndianMachine ())
-    {
-        fprintf (stderr,
-            "iASL is not currently supported on big-endian machines.\n");
-        return (-1);
-    }
-
-    AcpiOsInitialize ();
-    ACPI_DEBUG_INITIALIZE (); /* For debug version only */
-
-    /* Initialize preprocessor and compiler before command line processing */
-
-    signal (SIGINT, AslSignalHandler);
-    AcpiGbl_ExternalFileList = NULL;
-    AcpiDbgLevel = 0;
-    PrInitializePreprocessor ();
-    AslInitialize ();
-
-    Index1 = Index2 = AslCommandLine (argc, argv);
-
-    /* Allocate the line buffer(s), must be after command line */
-
-    Gbl_LineBufferSize /= 2;
-    UtExpandLineBuffers ();
-
-    /* Perform global actions first/only */
-
-    if (Gbl_DisassembleAll)
-    {
-        while (argv[Index1])
-        {
-            Status = AcpiDmAddToExternalFileList (argv[Index1]);
-            if (ACPI_FAILURE (Status))
-            {
-                return (-1);
-            }
-
-            Index1++;
-        }
-    }
-
-    /* Process each pathname/filename in the list, with possible wildcards */
-
-    while (argv[Index2])
-    {
-        /*
-         * If -p not specified, we will use the input filename as the
-         * output filename prefix
-         */
-        if (Gbl_UseDefaultAmlFilename)
-        {
-            Gbl_OutputFilenamePrefix = argv[Index2];
-            UtConvertBackslashes (Gbl_OutputFilenamePrefix);
-        }
-
-        Status = AslDoOneFile (argv[Index2]);
-        if (ACPI_FAILURE (Status))
-        {
-            ReturnStatus = -1;
-            goto CleanupAndExit;
-        }
-
-        Index2++;
-    }
-
-
-CleanupAndExit:
-
-    UtFreeLineBuffers ();
-    AslParserCleanup ();
-
-    if (AcpiGbl_ExternalFileList)
-    {
-        AcpiDmClearExternalFileList();
-    }
-
-    return (ReturnStatus);
-}
--- a/sys/external/bsd/acpica/dist/compiler/aslmaputils.c	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/aslmaputils.c	Fri Nov 11 19:14:16 2016 +0000
@@ -80,6 +80,12 @@
 
 
     Op = HidNode->Op;
+    if (!Op)
+    {
+        /* Object is not resolved, probably an External */
+
+        return ("Unresolved Symbol - referenced but not defined in this table");
+    }
 
     switch (Op->Asl.ParseOpcode)
     {
--- a/sys/external/bsd/acpica/dist/compiler/asloperands.c	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/asloperands.c	Fri Nov 11 19:14:16 2016 +0000
@@ -351,6 +351,20 @@
             NewBitOffset = (UINT32) PkgLengthNode->Asl.Value.Integer;
             CurrentBitOffset += NewBitOffset;
 
+            if ((NewBitOffset == 0) &&
+                (Next->Asl.ParseOpcode == PARSEOP_RESERVED_BYTES))
+            {
+                /*
+                 * Unnamed field with a bit length of zero. We can
+                 * safely just ignore this. However, we will not ignore
+                 * a named field of zero length, we don't want to just
+                 * toss out a name.
+                 */
+                Next->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG;
+                PkgLengthNode->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG;
+                break;
+            }
+
             /* Save the current AccessAs value for error checking later */
 
             switch (AccessType)
--- a/sys/external/bsd/acpica/dist/compiler/asloptions.c	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/asloptions.c	Fri Nov 11 19:14:16 2016 +0000
@@ -70,6 +70,9 @@
 #define ASL_TOKEN_SEPARATORS    " \t\n"
 #define ASL_SUPPORTED_OPTIONS   "@:a:b|c|d^D:e:f^gh^i|I:l^m:no|p:P^r:s|t|T+G^v^w|x:z"
 
+static char ASL_BUILD_DATE[] = __DATE__;
+static char ASL_BUILD_TIME[] = __TIME__;
+
 
 /*******************************************************************************
  *
@@ -275,11 +278,25 @@
         {
         case '^':
 
+            /* Get the required argument */
+
+            if (AcpiGetoptArgument (argc, argv))
+            {
+                return (-1);
+            }
+
             Gbl_DoCompile = FALSE;
             break;
 
         case 'a':
 
+            /* Get the required argument */
+
+            if (AcpiGetoptArgument (argc, argv))
+            {
+                return (-1);
+            }
+
             Gbl_DoCompile = FALSE;
             Gbl_DisassembleAll = TRUE;
             break;
@@ -390,6 +407,11 @@
             UtDisplayConstantOpcodes ();
             exit (0);
 
+        case 'd':
+
+            AslDisassemblyHelp ();
+            exit (0);
+
         case 'f':
 
             AslFilenameHelp ();
@@ -539,6 +561,13 @@
             Gbl_CompileTimesFlag = TRUE;
             break;
 
+        case 'd':
+
+            /* Disable disassembler code optimizations */
+
+            AcpiGbl_DoDisassemblerOptimizations = FALSE;
+            break;
+
         case 'e':
 
             /* iASL: Disable External opcode generation */
@@ -698,6 +727,12 @@
             Gbl_NoErrors = TRUE;
             break;
 
+        case 'd':
+
+            printf ("%s Build date/time: %s %s\n",
+                ASL_COMPILER_NAME, ASL_BUILD_DATE, ASL_BUILD_TIME);
+            exit (0);
+
         case 'e':
 
             /* Disable all warning/remark messages (errors only) */
--- a/sys/external/bsd/acpica/dist/compiler/aslparser.y	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/aslparser.y	Fri Nov 11 19:14:16 2016 +0000
@@ -66,6 +66,7 @@
 AslLocalAllocate (
     unsigned int            Size);
 
+
 /* Bison/yacc configuration */
 
 #define static
@@ -99,7 +100,7 @@
  * These shift/reduce conflicts are expected. There should be zero
  * reduce/reduce conflicts.
  */
-%expect 101
+%expect 102
 
 /*! [Begin] no source code translation */
 
@@ -122,8 +123,11 @@
 /* Production rules */
 
 m4_include(aslrules.y)
+m4_include(aslprimaries.y)
 m4_include(aslcstyle.y)
+m4_include(aslkeywords.y)
 m4_include(aslresources.y)
+m4_include(aslhelpers.y)
 %%
 
 /*! [End] no source code translation !*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/aslprimaries.y	Fri Nov 11 19:14:16 2016 +0000
@@ -0,0 +1,1160 @@
+NoEcho('
+/******************************************************************************
+ *
+ * Module Name: aslprimaries.y - Rules for primary ASL operators
+ *
+ *****************************************************************************/
+
+/*
+ * Copyright (C) 2000 - 2016, Intel Corp.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions, and the following disclaimer,
+ *    without modification.
+ * 2. Redistributions in binary form must reproduce at minimum a disclaimer
+ *    substantially similar to the "NO WARRANTY" disclaimer below
+ *    ("Disclaimer") and any redistribution must be conditioned upon
+ *    including a substantially similar Disclaimer requirement for further
+ *    binary redistribution.
+ * 3. Neither the names of the above-listed copyright holders nor the names
+ *    of any contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ * Alternatively, this software may be distributed under the terms of the
+ * GNU General Public License ("GPL") version 2 as published by the Free
+ * Software Foundation.
+ *
+ * NO WARRANTY
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGES.
+ */
+
+')
+
+
+/*******************************************************************************
+ *
+ * ASL Primary Terms
+ *
+ ******************************************************************************/
+
+AccessAsTerm
+    : PARSEOP_ACCESSAS '('
+        AccessTypeKeyword
+        OptionalAccessAttribTerm
+        ')'                         {$$ = TrCreateNode (PARSEOP_ACCESSAS,2,$3,$4);}
+    | PARSEOP_ACCESSAS '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+AcquireTerm
+    : PARSEOP_ACQUIRE '('           {$<n>$ = TrCreateLeafNode (PARSEOP_ACQUIRE);}
+        SuperName
+        ',' WordConstExpr
+        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$6);}
+    | PARSEOP_ACQUIRE '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+AddTerm
+    : PARSEOP_ADD '('               {$<n>$ = TrCreateLeafNode (PARSEOP_ADD);}
+        TermArg
+        TermArgItem
+        Target
+        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
+    | PARSEOP_ADD '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+AliasTerm
+    : PARSEOP_ALIAS '('             {$<n>$ = TrCreateLeafNode (PARSEOP_ALIAS);}
+        NameString
+        NameStringItem
+        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,
+                                        TrSetNodeFlags ($5, NODE_IS_NAME_DECLARATION));}
+    | PARSEOP_ALIAS '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+AndTerm
+    : PARSEOP_AND '('               {$<n>$ = TrCreateLeafNode (PARSEOP_AND);}
+        TermArg
+        TermArgItem
+        Target
+        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
+    | PARSEOP_AND '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+ArgTerm
+    : PARSEOP_ARG0                  {$$ = TrCreateLeafNode (PARSEOP_ARG0);}
+    | PARSEOP_ARG1                  {$$ = TrCreateLeafNode (PARSEOP_ARG1);}
+    | PARSEOP_ARG2                  {$$ = TrCreateLeafNode (PARSEOP_ARG2);}
+    | PARSEOP_ARG3                  {$$ = TrCreateLeafNode (PARSEOP_ARG3);}
+    | PARSEOP_ARG4                  {$$ = TrCreateLeafNode (PARSEOP_ARG4);}
+    | PARSEOP_ARG5                  {$$ = TrCreateLeafNode (PARSEOP_ARG5);}
+    | PARSEOP_ARG6                  {$$ = TrCreateLeafNode (PARSEOP_ARG6);}
+    ;
+
+BankFieldTerm
+    : PARSEOP_BANKFIELD '('         {$<n>$ = TrCreateLeafNode (PARSEOP_BANKFIELD);}
+        NameString
+        NameStringItem
+        TermArgItem
+        ',' AccessTypeKeyword
+        ',' LockRuleKeyword
+        ',' UpdateRuleKeyword
+        ')' '{'
+            FieldUnitList '}'       {$$ = TrLinkChildren ($<n>3,7,
+                                        $4,$5,$6,$8,$10,$12,$15);}
+    | PARSEOP_BANKFIELD '('
+        error ')' '{' error '}'     {$$ = AslDoError(); yyclearin;}
+    ;
+
+BreakTerm
+    : PARSEOP_BREAK                 {$$ = TrCreateNode (PARSEOP_BREAK, 0);}
+    ;
+
+BreakPointTerm
+    : PARSEOP_BREAKPOINT            {$$ = TrCreateNode (PARSEOP_BREAKPOINT, 0);}
+    ;
+
+BufferTerm
+    : PARSEOP_BUFFER                {$<n>$ = TrCreateLeafNode (PARSEOP_BUFFER);}
+        OptionalDataCount
+        '{' BufferTermData '}'      {$$ = TrLinkChildren ($<n>2,2,$3,$5);}
+    ;
+
+BufferTermData
+    : ByteList                      {}
+    | StringData                    {}
+    ;
+
+CaseTerm
+    : PARSEOP_CASE '('              {$<n>$ = TrCreateLeafNode (PARSEOP_CASE);}
+        DataObject
+        ')' '{'
+            TermList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
+    | PARSEOP_CASE '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+ConcatTerm
+    : PARSEOP_CONCATENATE '('       {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATE);}
+        TermArg
+        TermArgItem
+        Target
+        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
+    | PARSEOP_CONCATENATE '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+ConcatResTerm
+    : PARSEOP_CONCATENATERESTEMPLATE '(' {$<n>$ = TrCreateLeafNode (
+                                            PARSEOP_CONCATENATERESTEMPLATE);}
+        TermArg
+        TermArgItem
+        Target
+        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
+    | PARSEOP_CONCATENATERESTEMPLATE '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+ConnectionTerm
+    : PARSEOP_CONNECTION '('
+        NameString
+        ')'                         {$$ = TrCreateNode (PARSEOP_CONNECTION,1,$3);}
+    | PARSEOP_CONNECTION '('        {$<n>$ = TrCreateLeafNode (PARSEOP_CONNECTION);}
+        ResourceMacroTerm
+        ')'                         {$$ = TrLinkChildren ($<n>3, 1,
+                                        TrLinkChildren (
+                                            TrCreateLeafNode (PARSEOP_RESOURCETEMPLATE), 3,
+                                            TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
+                                            TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
+                                            $4));}
+    | PARSEOP_CONNECTION '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+CondRefOfTerm
+    : PARSEOP_CONDREFOF '('         {$<n>$ = TrCreateLeafNode (PARSEOP_CONDREFOF);}
+        SuperName
+        Target
+        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
+    | PARSEOP_CONDREFOF '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+ContinueTerm
+    : PARSEOP_CONTINUE              {$$ = TrCreateNode (PARSEOP_CONTINUE, 0);}
+    ;
+
+CopyObjectTerm
+    : PARSEOP_COPYOBJECT '('        {$<n>$ = TrCreateLeafNode (PARSEOP_COPYOBJECT);}
+        TermArg
+        ',' SimpleTarget
+        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,
+                                        TrSetNodeFlags ($6, NODE_IS_TARGET));}
+    | PARSEOP_COPYOBJECT '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+CreateBitFieldTerm
+    : PARSEOP_CREATEBITFIELD '('    {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBITFIELD);}
+        TermArg
+        TermArgItem
+        NameStringItem
+        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,
+                                        TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
+    | PARSEOP_CREATEBITFIELD '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+CreateByteFieldTerm
+    : PARSEOP_CREATEBYTEFIELD '('   {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBYTEFIELD);}
+        TermArg
+        TermArgItem
+        NameStringItem
+        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,
+                                        TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
+    | PARSEOP_CREATEBYTEFIELD '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+CreateDWordFieldTerm
+    : PARSEOP_CREATEDWORDFIELD '('  {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEDWORDFIELD);}
+        TermArg
+        TermArgItem
+        NameStringItem
+        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,
+                                        TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
+    | PARSEOP_CREATEDWORDFIELD '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+CreateFieldTerm
+    : PARSEOP_CREATEFIELD '('       {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEFIELD);}
+        TermArg
+        TermArgItem
+        TermArgItem
+        NameStringItem
+        ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,
+                                        TrSetNodeFlags ($7, NODE_IS_NAME_DECLARATION));}
+    | PARSEOP_CREATEFIELD '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+CreateQWordFieldTerm
+    : PARSEOP_CREATEQWORDFIELD '('  {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEQWORDFIELD);}
+        TermArg
+        TermArgItem
+        NameStringItem
+        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,
+                                        TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
+    | PARSEOP_CREATEQWORDFIELD '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+CreateWordFieldTerm
+    : PARSEOP_CREATEWORDFIELD '('   {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEWORDFIELD);}
+        TermArg
+        TermArgItem
+        NameStringItem
+        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,
+                                        TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
+    | PARSEOP_CREATEWORDFIELD '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+DataRegionTerm
+    : PARSEOP_DATATABLEREGION '('   {$<n>$ = TrCreateLeafNode (PARSEOP_DATATABLEREGION);}
+        NameString
+        TermArgItem
+        TermArgItem
+        TermArgItem
+        ')'                         {$$ = TrLinkChildren ($<n>3,4,
+                                        TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$6,$7);}
+    | PARSEOP_DATATABLEREGION '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+DebugTerm
+    : PARSEOP_DEBUG                 {$$ = TrCreateLeafNode (PARSEOP_DEBUG);}
+    ;
+
+DecTerm
+    : PARSEOP_DECREMENT '('         {$<n>$ = TrCreateLeafNode (PARSEOP_DECREMENT);}
+        SuperName
+        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
+    | PARSEOP_DECREMENT '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+DefaultTerm
+    : PARSEOP_DEFAULT '{'           {$<n>$ = TrCreateLeafNode (PARSEOP_DEFAULT);}
+        TermList '}'                {$$ = TrLinkChildren ($<n>3,1,$4);}
+    | PARSEOP_DEFAULT '{'
+        error '}'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+DerefOfTerm
+    : PARSEOP_DEREFOF '('           {$<n>$ = TrCreateLeafNode (PARSEOP_DEREFOF);}
+        TermArg
+        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
+    | PARSEOP_DEREFOF '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+DeviceTerm
+    : PARSEOP_DEVICE '('            {$<n>$ = TrCreateLeafNode (PARSEOP_DEVICE);}
+        NameString
+        ')' '{'
+            TermList '}'            {$$ = TrLinkChildren ($<n>3,2,
+                                        TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
+    | PARSEOP_DEVICE '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+DivideTerm
+    : PARSEOP_DIVIDE '('            {$<n>$ = TrCreateLeafNode (PARSEOP_DIVIDE);}
+        TermArg
+        TermArgItem
+        Target
+        Target
+        ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
+    | PARSEOP_DIVIDE '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+EISAIDTerm
+    : PARSEOP_EISAID '('
+        StringData ')'              {$$ = TrUpdateNode (PARSEOP_EISAID, $3);}
+    | PARSEOP_EISAID '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+ElseIfTerm
+    : IfTerm ElseTerm               {$$ = TrLinkPeerNode ($1,$2);}
+    ;
+
+ElseTerm
+    :                               {$$ = NULL;}
+    | PARSEOP_ELSE '{'              {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
+        TermList '}'                {$$ = TrLinkChildren ($<n>3,1,$4);}
+
+    | PARSEOP_ELSE '{'
+        error '}'                   {$$ = AslDoError(); yyclearin;}
+
+    | PARSEOP_ELSE
+        error                       {$$ = AslDoError(); yyclearin;}
+
+    | PARSEOP_ELSEIF '('            {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
+        TermArg                     {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
+        ')' '{'
+            TermList '}'            {TrLinkChildren ($<n>5,2,$4,$8);}
+        ElseTerm                    {TrLinkPeerNode ($<n>5,$11);}
+                                    {$$ = TrLinkChildren ($<n>3,1,$<n>5);}
+
+    | PARSEOP_ELSEIF '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+
+    | PARSEOP_ELSEIF
+        error                       {$$ = AslDoError(); yyclearin;}
+    ;
+
+EventTerm
+    : PARSEOP_EVENT '('             {$<n>$ = TrCreateLeafNode (PARSEOP_EVENT);}
+        NameString
+        ')'                         {$$ = TrLinkChildren ($<n>3,1,
+                                        TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION));}
+    | PARSEOP_EVENT '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+ExternalTerm
+    : PARSEOP_EXTERNAL '('
+        NameString
+        OptionalObjectTypeKeyword
+        OptionalParameterTypePackage
+        OptionalParameterTypesPackage
+        ')'                         {$$ = TrCreateNode (PARSEOP_EXTERNAL,4,$3,$4,$5,$6);}
+    | PARSEOP_EXTERNAL '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+FatalTerm
+    : PARSEOP_FATAL '('             {$<n>$ = TrCreateLeafNode (PARSEOP_FATAL);}
+        ByteConstExpr
+        ',' DWordConstExpr
+        TermArgItem
+        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
+    | PARSEOP_FATAL '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+FieldTerm
+    : PARSEOP_FIELD '('             {$<n>$ = TrCreateLeafNode (PARSEOP_FIELD);}
+        NameString
+        ',' AccessTypeKeyword
+        ',' LockRuleKeyword
+        ',' UpdateRuleKeyword
+        ')' '{'
+            FieldUnitList '}'       {$$ = TrLinkChildren ($<n>3,5,$4,$6,$8,$10,$13);}
+    | PARSEOP_FIELD '('
+        error ')' '{' error '}'     {$$ = AslDoError(); yyclearin;}
+    ;
+
+FindSetLeftBitTerm
+    : PARSEOP_FINDSETLEFTBIT '('    {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETLEFTBIT);}
+        TermArg
+        Target
+        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
+    | PARSEOP_FINDSETLEFTBIT '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+FindSetRightBitTerm
+    : PARSEOP_FINDSETRIGHTBIT '('   {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETRIGHTBIT);}
+        TermArg
+        Target
+        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
+    | PARSEOP_FINDSETRIGHTBIT '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+    /* Convert a For() loop to a While() loop */
+ForTerm
+    : PARSEOP_FOR '('               {$<n>$ = TrCreateLeafNode (PARSEOP_WHILE);}
+        OptionalTermArg ','         {}
+        OptionalPredicate ','
+        OptionalTermArg             {$<n>$ = TrLinkPeerNode ($4,$<n>3);
+                                        TrSetParent ($9,$<n>3);}                /* New parent is WHILE */
+        ')' '{' TermList '}'        {$<n>$ = TrLinkChildren ($<n>3,2,$7,$13);}
+                                    {$<n>$ = TrLinkPeerNode ($13,$9);
+                                        $$ = $<n>10;}
+    ;
+
+OptionalPredicate
+    :                               {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER, 1);}
+    | TermArg                       {$$ = $1;}
+    ;
+
+FprintfTerm
+    : PARSEOP_FPRINTF '('            {$<n>$ = TrCreateLeafNode (PARSEOP_FPRINTF);}
+        TermArg ','
+        StringData
+        PrintfArgList
+        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
+    | PARSEOP_FPRINTF '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+FromBCDTerm
+    : PARSEOP_FROMBCD '('           {$<n>$ = TrCreateLeafNode (PARSEOP_FROMBCD);}
+        TermArg
+        Target
+        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
+    | PARSEOP_FROMBCD '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+FunctionTerm
+    : PARSEOP_FUNCTION '('          {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
+        NameString
+        OptionalParameterTypePackage
+        OptionalParameterTypesPackage
+        ')' '{'
+            TermList '}'            {$$ = TrLinkChildren ($<n>3,7,
+                                        TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
+                                        TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),
+                                        TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL),
+                                        TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),$5,$6,$9);}
+    | PARSEOP_FUNCTION '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+IfTerm
+    : PARSEOP_IF '('                {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
+        TermArg
+        ')' '{'
+            TermList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
+
+    | PARSEOP_IF '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+IncludeTerm
+    : PARSEOP_INCLUDE '('
+        String  ')'                 {$$ = TrUpdateNode (PARSEOP_INCLUDE, $3);
+                                        FlOpenIncludeFile ($3);}
+    ;
+
+IncludeEndTerm
+    : PARSEOP_INCLUDE_END           {$<n>$ = TrCreateLeafNode (PARSEOP_INCLUDE_END);
+                                        TrSetCurrentFilename ($$);}
+    ;
+
+IncTerm
+    : PARSEOP_INCREMENT '('         {$<n>$ = TrCreateLeafNode (PARSEOP_INCREMENT);}
+        SuperName
+        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
+    | PARSEOP_INCREMENT '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+IndexFieldTerm
+    : PARSEOP_INDEXFIELD '('        {$<n>$ = TrCreateLeafNode (PARSEOP_INDEXFIELD);}
+        NameString
+        NameStringItem
+        ',' AccessTypeKeyword
+        ',' LockRuleKeyword
+        ',' UpdateRuleKeyword
+        ')' '{'
+            FieldUnitList '}'       {$$ = TrLinkChildren ($<n>3,6,$4,$5,$7,$9,$11,$14);}
+    | PARSEOP_INDEXFIELD '('
+        error ')' '{' error '}'     {$$ = AslDoError(); yyclearin;}
+    ;
+
+IndexTerm
+    : PARSEOP_INDEX '('             {$<n>$ = TrCreateLeafNode (PARSEOP_INDEX);}
+        TermArg
+        TermArgItem
+        Target
+        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
+    | PARSEOP_INDEX '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+LAndTerm
+    : PARSEOP_LAND '('              {$<n>$ = TrCreateLeafNode (PARSEOP_LAND);}
+        TermArg
+        TermArgItem
+        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
+    | PARSEOP_LAND '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+LEqualTerm
+    : PARSEOP_LEQUAL '('            {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
+        TermArg
+        TermArgItem
+        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
+    | PARSEOP_LEQUAL '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+LGreaterEqualTerm
+    : PARSEOP_LGREATEREQUAL '('     {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
+        TermArg
+        TermArgItem
+        ')'                         {$$ = TrCreateNode (PARSEOP_LNOT, 1,
+                                        TrLinkChildren ($<n>3,2,$4,$5));}
+    | PARSEOP_LGREATEREQUAL '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+LGreaterTerm
+    : PARSEOP_LGREATER '('          {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
+        TermArg
+        TermArgItem
+        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
+    | PARSEOP_LGREATER '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+LLessEqualTerm
+    : PARSEOP_LLESSEQUAL '('        {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
+        TermArg
+        TermArgItem
+        ')'                         {$$ = TrCreateNode (PARSEOP_LNOT, 1,
+                                        TrLinkChildren ($<n>3,2,$4,$5));}
+    | PARSEOP_LLESSEQUAL '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+LLessTerm
+    : PARSEOP_LLESS '('             {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
+        TermArg
+        TermArgItem
+        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
+    | PARSEOP_LLESS '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+LNotEqualTerm
+    : PARSEOP_LNOTEQUAL '('         {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
+        TermArg
+        TermArgItem
+        ')'                         {$$ = TrCreateNode (PARSEOP_LNOT, 1,
+                                        TrLinkChildren ($<n>3,2,$4,$5));}
+    | PARSEOP_LNOTEQUAL '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+LNotTerm
+    : PARSEOP_LNOT '('              {$<n>$ = TrCreateLeafNode (PARSEOP_LNOT);}
+        TermArg
+        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
+    | PARSEOP_LNOT '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+LoadTableTerm
+    : PARSEOP_LOADTABLE '('         {$<n>$ = TrCreateLeafNode (PARSEOP_LOADTABLE);}
+        TermArg
+        TermArgItem
+        TermArgItem
+        OptionalListString
+        OptionalListString
+        OptionalReference
+        ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$5,$6,$7,$8,$9);}
+    | PARSEOP_LOADTABLE '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+LoadTerm
+    : PARSEOP_LOAD '('              {$<n>$ = TrCreateLeafNode (PARSEOP_LOAD);}
+        NameString
+        RequiredTarget
+        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
+    | PARSEOP_LOAD '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+LocalTerm
+    : PARSEOP_LOCAL0                {$$ = TrCreateLeafNode (PARSEOP_LOCAL0);}
+    | PARSEOP_LOCAL1                {$$ = TrCreateLeafNode (PARSEOP_LOCAL1);}
+    | PARSEOP_LOCAL2                {$$ = TrCreateLeafNode (PARSEOP_LOCAL2);}
+    | PARSEOP_LOCAL3                {$$ = TrCreateLeafNode (PARSEOP_LOCAL3);}
+    | PARSEOP_LOCAL4                {$$ = TrCreateLeafNode (PARSEOP_LOCAL4);}
+    | PARSEOP_LOCAL5                {$$ = TrCreateLeafNode (PARSEOP_LOCAL5);}
+    | PARSEOP_LOCAL6                {$$ = TrCreateLeafNode (PARSEOP_LOCAL6);}
+    | PARSEOP_LOCAL7                {$$ = TrCreateLeafNode (PARSEOP_LOCAL7);}
+    ;
+
+LOrTerm
+    : PARSEOP_LOR '('               {$<n>$ = TrCreateLeafNode (PARSEOP_LOR);}
+        TermArg
+        TermArgItem
+        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
+    | PARSEOP_LOR '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+MatchTerm
+    : PARSEOP_MATCH '('             {$<n>$ = TrCreateLeafNode (PARSEOP_MATCH);}
+        TermArg
+        ',' MatchOpKeyword
+        TermArgItem
+        ',' MatchOpKeyword
+        TermArgItem
+        TermArgItem
+        ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$6,$7,$9,$10,$11);}
+    | PARSEOP_MATCH '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+MethodTerm
+    : PARSEOP_METHOD  '('           {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
+        NameString
+        OptionalByteConstExpr       {UtCheckIntegerRange ($5, 0, 7);}
+        OptionalSerializeRuleKeyword
+        OptionalByteConstExpr
+        OptionalParameterTypePackage
+        OptionalParameterTypesPackage
+        ')' '{'
+            TermList '}'            {$$ = TrLinkChildren ($<n>3,7,
+                                        TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
+                                        $5,$7,$8,$9,$10,$13);}
+    | PARSEOP_METHOD '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+MidTerm
+    : PARSEOP_MID '('               {$<n>$ = TrCreateLeafNode (PARSEOP_MID);}
+        TermArg
+        TermArgItem
+        TermArgItem
+        Target
+        ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
+    | PARSEOP_MID '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+ModTerm
+    : PARSEOP_MOD '('               {$<n>$ = TrCreateLeafNode (PARSEOP_MOD);}
+        TermArg
+        TermArgItem
+        Target
+        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
+    | PARSEOP_MOD '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+MultiplyTerm
+    : PARSEOP_MULTIPLY '('          {$<n>$ = TrCreateLeafNode (PARSEOP_MULTIPLY);}
+        TermArg
+        TermArgItem
+        Target
+        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
+    | PARSEOP_MULTIPLY '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+MutexTerm
+    : PARSEOP_MUTEX '('             {$<n>$ = TrCreateLeafNode (PARSEOP_MUTEX);}
+        NameString
+        ',' ByteConstExpr
+        ')'                         {$$ = TrLinkChildren ($<n>3,2,
+                                        TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
+    | PARSEOP_MUTEX '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+NameTerm
+    : PARSEOP_NAME '('              {$<n>$ = TrCreateLeafNode (PARSEOP_NAME);}
+        NameString
+        ',' DataObject
+        ')'                         {$$ = TrLinkChildren ($<n>3,2,
+                                        TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
+    | PARSEOP_NAME '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+NAndTerm
+    : PARSEOP_NAND '('              {$<n>$ = TrCreateLeafNode (PARSEOP_NAND);}
+        TermArg
+        TermArgItem
+        Target
+        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
+    | PARSEOP_NAND '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+NoOpTerm
+    : PARSEOP_NOOP                  {$$ = TrCreateNode (PARSEOP_NOOP, 0);}
+    ;
+
+NOrTerm
+    : PARSEOP_NOR '('               {$<n>$ = TrCreateLeafNode (PARSEOP_NOR);}
+        TermArg
+        TermArgItem
+        Target
+        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
+    | PARSEOP_NOR '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+NotifyTerm
+    : PARSEOP_NOTIFY '('            {$<n>$ = TrCreateLeafNode (PARSEOP_NOTIFY);}
+        SuperName
+        TermArgItem
+        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
+    | PARSEOP_NOTIFY '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+NotTerm
+    : PARSEOP_NOT '('               {$<n>$ = TrCreateLeafNode (PARSEOP_NOT);}
+        TermArg
+        Target
+        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
+    | PARSEOP_NOT '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+ObjectTypeTerm
+    : PARSEOP_OBJECTTYPE '('        {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE);}
+        ObjectTypeName
+        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
+    | PARSEOP_OBJECTTYPE '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+OffsetTerm
+    : PARSEOP_OFFSET '('
+        AmlPackageLengthTerm
+        ')'                         {$$ = TrCreateNode (PARSEOP_OFFSET,1,$3);}
+    | PARSEOP_OFFSET '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+OpRegionTerm
+    : PARSEOP_OPERATIONREGION '('   {$<n>$ = TrCreateLeafNode (PARSEOP_OPERATIONREGION);}
+        NameString
+        ',' OpRegionSpaceIdTerm
+        TermArgItem
+        TermArgItem
+        ')'                         {$$ = TrLinkChildren ($<n>3,4,
+                                        TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
+                                        $6,$7,$8);}
+    | PARSEOP_OPERATIONREGION '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+OpRegionSpaceIdTerm
+    : RegionSpaceKeyword            {}
+    | ByteConst                     {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
+    ;
+
+OrTerm
+    : PARSEOP_OR '('                {$<n>$ = TrCreateLeafNode (PARSEOP_OR);}
+        TermArg
+        TermArgItem
+        Target
+        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
+    | PARSEOP_OR '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+PackageTerm
+    : PARSEOP_PACKAGE               {$<n>$ = TrCreateLeafNode (PARSEOP_VAR_PACKAGE);}
+        OptionalDataCount
+        '{' PackageList '}'         {$$ = TrLinkChildren ($<n>2,2,$3,$5);}
+
+PowerResTerm
+    : PARSEOP_POWERRESOURCE '('     {$<n>$ = TrCreateLeafNode (PARSEOP_POWERRESOURCE);}
+        NameString
+        ',' ByteConstExpr
+        ',' WordConstExpr
+        ')' '{'
+            TermList '}'            {$$ = TrLinkChildren ($<n>3,4,
+                                        TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
+                                        $6,$8,$11);}
+    | PARSEOP_POWERRESOURCE '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+PrintfTerm
+    : PARSEOP_PRINTF '('            {$<n>$ = TrCreateLeafNode (PARSEOP_PRINTF);}
+        StringData
+        PrintfArgList
+        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
+    | PARSEOP_PRINTF '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+PrintfArgList
+    :                               {$$ = NULL;}
+    | TermArg                       {$$ = $1;}
+    | PrintfArgList ','
+       TermArg                      {$$ = TrLinkPeerNode ($1, $3);}
+    ;
+
+ProcessorTerm
+    : PARSEOP_PROCESSOR '('         {$<n>$ = TrCreateLeafNode (PARSEOP_PROCESSOR);}
+        NameString
+        ',' ByteConstExpr
+        OptionalDWordConstExpr
+        OptionalByteConstExpr
+        ')' '{'
+            TermList '}'            {$$ = TrLinkChildren ($<n>3,5,
+                                        TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
+                                        $6,$7,$8,$11);}
+    | PARSEOP_PROCESSOR '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+RawDataBufferTerm
+    : PARSEOP_DATABUFFER  '('       {$<n>$ = TrCreateLeafNode (PARSEOP_DATABUFFER);}
+        OptionalWordConst
+        ')' '{'
+            ByteList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
+    | PARSEOP_DATABUFFER '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+/*
+ * In RefOf, the node isn't really a target, but we can't keep track of it after
+ * we've taken a pointer to it. (hard to tell if a local becomes initialized this way.)
+ */
+RefOfTerm
+    : PARSEOP_REFOF '('             {$<n>$ = TrCreateLeafNode (PARSEOP_REFOF);}
+        SuperName
+        ')'                         {$$ = TrLinkChildren ($<n>3,1,
+                                        TrSetNodeFlags ($4, NODE_IS_TARGET));}
+    | PARSEOP_REFOF '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+ReleaseTerm
+    : PARSEOP_RELEASE '('           {$<n>$ = TrCreateLeafNode (PARSEOP_RELEASE);}
+        SuperName
+        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
+    | PARSEOP_RELEASE '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+ResetTerm
+    : PARSEOP_RESET '('             {$<n>$ = TrCreateLeafNode (PARSEOP_RESET);}
+        SuperName
+        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
+    | PARSEOP_RESET '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+ReturnTerm
+    : PARSEOP_RETURN '('            {$<n>$ = TrCreateLeafNode (PARSEOP_RETURN);}
+        OptionalReturnArg
+        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
+    | PARSEOP_RETURN                {$$ = TrLinkChildren (
+                                        TrCreateLeafNode (PARSEOP_RETURN),1,
+                                        TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO),
+                                            NODE_IS_NULL_RETURN));}
+    | PARSEOP_RETURN '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+ScopeTerm
+    : PARSEOP_SCOPE '('             {$<n>$ = TrCreateLeafNode (PARSEOP_SCOPE);}
+        NameString
+        ')' '{'
+            TermList '}'            {$$ = TrLinkChildren ($<n>3,2,
+                                        TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
+    | PARSEOP_SCOPE '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+ShiftLeftTerm
+    : PARSEOP_SHIFTLEFT '('         {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTLEFT);}
+        TermArg
+        TermArgItem
+        Target
+        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
+    | PARSEOP_SHIFTLEFT '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+ShiftRightTerm
+    : PARSEOP_SHIFTRIGHT '('        {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTRIGHT);}
+        TermArg
+        TermArgItem
+        Target
+        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
+    | PARSEOP_SHIFTRIGHT '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+SignalTerm
+    : PARSEOP_SIGNAL '('            {$<n>$ = TrCreateLeafNode (PARSEOP_SIGNAL);}
+        SuperName
+        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
+    | PARSEOP_SIGNAL '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+SizeOfTerm
+    : PARSEOP_SIZEOF '('            {$<n>$ = TrCreateLeafNode (PARSEOP_SIZEOF);}
+        SuperName
+        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
+    | PARSEOP_SIZEOF '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+SleepTerm
+    : PARSEOP_SLEEP '('             {$<n>$ = TrCreateLeafNode (PARSEOP_SLEEP);}
+        TermArg
+        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
+    | PARSEOP_SLEEP '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+StallTerm
+    : PARSEOP_STALL '('             {$<n>$ = TrCreateLeafNode (PARSEOP_STALL);}
+        TermArg
+        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
+    | PARSEOP_STALL '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+StoreTerm
+    : PARSEOP_STORE '('             {$<n>$ = TrCreateLeafNode (PARSEOP_STORE);}
+        TermArg
+        ',' SuperName
+        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,
+                                        TrSetNodeFlags ($6, NODE_IS_TARGET));}
+    | PARSEOP_STORE '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+SubtractTerm
+    : PARSEOP_SUBTRACT '('          {$<n>$ = TrCreateLeafNode (PARSEOP_SUBTRACT);}
+        TermArg
+        TermArgItem
+        Target
+        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
+    | PARSEOP_SUBTRACT '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+SwitchTerm
+    : PARSEOP_SWITCH '('            {$<n>$ = TrCreateLeafNode (PARSEOP_SWITCH);}
+        TermArg
+        ')' '{'
+            CaseDefaultTermList '}'
+                                    {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
+    | PARSEOP_SWITCH '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+ThermalZoneTerm
+    : PARSEOP_THERMALZONE '('       {$<n>$ = TrCreateLeafNode (PARSEOP_THERMALZONE);}
+        NameString
+        ')' '{'
+            TermList '}'            {$$ = TrLinkChildren ($<n>3,2,
+                                        TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
+    | PARSEOP_THERMALZONE '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+TimerTerm
+    : PARSEOP_TIMER '('             {$<n>$ = TrCreateLeafNode (PARSEOP_TIMER);}
+        ')'                         {$$ = TrLinkChildren ($<n>3,0);}
+    | PARSEOP_TIMER                 {$$ = TrLinkChildren (
+                                        TrCreateLeafNode (PARSEOP_TIMER),0);}
+    | PARSEOP_TIMER '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+ToBCDTerm
+    : PARSEOP_TOBCD '('             {$<n>$ = TrCreateLeafNode (PARSEOP_TOBCD);}
+        TermArg
+        Target
+        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
+    | PARSEOP_TOBCD '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+ToBufferTerm
+    : PARSEOP_TOBUFFER '('          {$<n>$ = TrCreateLeafNode (PARSEOP_TOBUFFER);}
+        TermArg
+        Target
+        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
+    | PARSEOP_TOBUFFER '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+ToDecimalStringTerm
+    : PARSEOP_TODECIMALSTRING '('   {$<n>$ = TrCreateLeafNode (PARSEOP_TODECIMALSTRING);}
+        TermArg
+        Target
+        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
+    | PARSEOP_TODECIMALSTRING '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+ToHexStringTerm
+    : PARSEOP_TOHEXSTRING '('       {$<n>$ = TrCreateLeafNode (PARSEOP_TOHEXSTRING);}
+        TermArg
+        Target
+        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
+    | PARSEOP_TOHEXSTRING '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+ToIntegerTerm
+    : PARSEOP_TOINTEGER '('         {$<n>$ = TrCreateLeafNode (PARSEOP_TOINTEGER);}
+        TermArg
+        Target
+        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
+    | PARSEOP_TOINTEGER '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+ToPLDTerm
+    : PARSEOP_TOPLD '('             {$<n>$ = TrCreateLeafNode (PARSEOP_TOPLD);}
+        PldKeywordList
+        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
+    | PARSEOP_TOPLD '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+PldKeywordList
+    :                               {$$ = NULL;}
+    | PldKeyword
+        PARSEOP_EXP_EQUALS Integer  {$$ = TrLinkChildren ($1,1,$3);}
+    | PldKeyword
+        PARSEOP_EXP_EQUALS String   {$$ = TrLinkChildren ($1,1,$3);}
+    | PldKeywordList ','            /* Allows a trailing comma at list end */
+    | PldKeywordList ','
+        PldKeyword
+        PARSEOP_EXP_EQUALS Integer  {$$ = TrLinkPeerNode ($1,TrLinkChildren ($3,1,$5));}
+    | PldKeywordList ','
+        PldKeyword
+        PARSEOP_EXP_EQUALS String   {$$ = TrLinkPeerNode ($1,TrLinkChildren ($3,1,$5));}
+    ;
+
+
+ToStringTerm
+    : PARSEOP_TOSTRING '('          {$<n>$ = TrCreateLeafNode (PARSEOP_TOSTRING);}
+        TermArg
+        OptionalCount
+        Target
+        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
+    | PARSEOP_TOSTRING '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+ToUUIDTerm
+    : PARSEOP_TOUUID '('
+        StringData ')'              {$$ = TrUpdateNode (PARSEOP_TOUUID, $3);}
+    | PARSEOP_TOUUID '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+UnicodeTerm
+    : PARSEOP_UNICODE '('           {$<n>$ = TrCreateLeafNode (PARSEOP_UNICODE);}
+        StringData
+        ')'                         {$$ = TrLinkChildren ($<n>3,2,0,$4);}
+    | PARSEOP_UNICODE '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+UnloadTerm
+    : PARSEOP_UNLOAD '('            {$<n>$ = TrCreateLeafNode (PARSEOP_UNLOAD);}
+        SuperName
+        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
+    | PARSEOP_UNLOAD '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+WaitTerm
+    : PARSEOP_WAIT '('              {$<n>$ = TrCreateLeafNode (PARSEOP_WAIT);}
+        SuperName
+        TermArgItem
+        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
+    | PARSEOP_WAIT '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+XOrTerm
+    : PARSEOP_XOR '('               {$<n>$ = TrCreateLeafNode (PARSEOP_XOR);}
+        TermArg
+        TermArgItem
+        Target
+        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
+    | PARSEOP_XOR '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
+
+WhileTerm
+    : PARSEOP_WHILE '('             {$<n>$ = TrCreateLeafNode (PARSEOP_WHILE);}
+        TermArg
+        ')' '{' TermList '}'
+                                    {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
+    | PARSEOP_WHILE '('
+        error ')'                   {$$ = AslDoError(); yyclearin;}
+    ;
--- a/sys/external/bsd/acpica/dist/compiler/aslresources.y	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/aslresources.y	Fri Nov 11 19:14:16 2016 +0000
@@ -44,313 +44,6 @@
 
 ')
 
-/*******************************************************************************
- *
- * ASL Parameter Keyword Terms
- *
- ******************************************************************************/
-
-AccessAttribKeyword
-    : PARSEOP_ACCESSATTRIB_BLOCK            {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK);}
-    | PARSEOP_ACCESSATTRIB_BLOCK_CALL       {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK_CALL);}
-    | PARSEOP_ACCESSATTRIB_BYTE             {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BYTE);}
-    | PARSEOP_ACCESSATTRIB_QUICK            {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_QUICK );}
-    | PARSEOP_ACCESSATTRIB_SND_RCV          {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_SND_RCV);}
-    | PARSEOP_ACCESSATTRIB_WORD             {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD);}
-    | PARSEOP_ACCESSATTRIB_WORD_CALL        {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD_CALL);}
-    | PARSEOP_ACCESSATTRIB_MULTIBYTE '('    {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_MULTIBYTE);}
-        ByteConst
-        ')'                                 {$$ = TrLinkChildren ($<n>3,1,$4);}
-    | PARSEOP_ACCESSATTRIB_RAW_BYTES '('    {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_RAW_BYTES);}
-        ByteConst
-        ')'                                 {$$ = TrLinkChildren ($<n>3,1,$4);}
-    | PARSEOP_ACCESSATTRIB_RAW_PROCESS '('  {$<n>$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_RAW_PROCESS);}
-        ByteConst
-        ')'                                 {$$ = TrLinkChildren ($<n>3,1,$4);}
-    ;
-
-AccessTypeKeyword
-    : PARSEOP_ACCESSTYPE_ANY                {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_ANY);}
-    | PARSEOP_ACCESSTYPE_BYTE               {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BYTE);}
-    | PARSEOP_ACCESSTYPE_WORD               {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_WORD);}
-    | PARSEOP_ACCESSTYPE_DWORD              {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_DWORD);}
-    | PARSEOP_ACCESSTYPE_QWORD              {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_QWORD);}
-    | PARSEOP_ACCESSTYPE_BUF                {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BUF);}
-    ;
-
-AddressingModeKeyword
-    : PARSEOP_ADDRESSINGMODE_7BIT           {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_7BIT);}
-    | PARSEOP_ADDRESSINGMODE_10BIT          {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_10BIT);}
-    ;
-
-AddressKeyword
-    : PARSEOP_ADDRESSTYPE_MEMORY            {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_MEMORY);}
-    | PARSEOP_ADDRESSTYPE_RESERVED          {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_RESERVED);}
-    | PARSEOP_ADDRESSTYPE_NVS               {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_NVS);}
-    | PARSEOP_ADDRESSTYPE_ACPI              {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_ACPI);}
-    ;
-
-AddressSpaceKeyword
-    : ByteConst                             {$$ = UtCheckIntegerRange ($1, 0x0A, 0xFF);}
-    | RegionSpaceKeyword                    {}
-    ;
-
-BitsPerByteKeyword
-    : PARSEOP_BITSPERBYTE_FIVE              {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_FIVE);}
-    | PARSEOP_BITSPERBYTE_SIX               {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_SIX);}
-    | PARSEOP_BITSPERBYTE_SEVEN             {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_SEVEN);}
-    | PARSEOP_BITSPERBYTE_EIGHT             {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_EIGHT);}
-    | PARSEOP_BITSPERBYTE_NINE              {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_NINE);}
-    ;
-
-ClockPhaseKeyword
-    : PARSEOP_CLOCKPHASE_FIRST              {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_FIRST);}
-    | PARSEOP_CLOCKPHASE_SECOND             {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_SECOND);}
-    ;
-
-ClockPolarityKeyword
-    : PARSEOP_CLOCKPOLARITY_LOW             {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_LOW);}
-    | PARSEOP_CLOCKPOLARITY_HIGH            {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_HIGH);}
-    ;
-
-DecodeKeyword
-    : PARSEOP_DECODETYPE_POS                {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_POS);}
-    | PARSEOP_DECODETYPE_SUB                {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_SUB);}
-    ;
-
-DevicePolarityKeyword
-    : PARSEOP_DEVICEPOLARITY_LOW            {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_LOW);}
-    | PARSEOP_DEVICEPOLARITY_HIGH           {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_HIGH);}
-    ;
-
-DMATypeKeyword
-    : PARSEOP_DMATYPE_A                     {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_A);}
-    | PARSEOP_DMATYPE_COMPATIBILITY         {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_COMPATIBILITY);}
-    | PARSEOP_DMATYPE_B                     {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_B);}
-    | PARSEOP_DMATYPE_F                     {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_F);}
-    ;
-
-EndianKeyword
-    : PARSEOP_ENDIAN_LITTLE                 {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_LITTLE);}
-    | PARSEOP_ENDIAN_BIG                    {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_BIG);}
-    ;
-
-FlowControlKeyword
-    : PARSEOP_FLOWCONTROL_HW                {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_HW);}
-    | PARSEOP_FLOWCONTROL_NONE              {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_NONE);}
-    | PARSEOP_FLOWCONTROL_SW                {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_SW);}
-    ;
-
-InterruptLevel
-    : PARSEOP_INTLEVEL_ACTIVEBOTH           {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEBOTH);}
-    | PARSEOP_INTLEVEL_ACTIVEHIGH           {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEHIGH);}
-    | PARSEOP_INTLEVEL_ACTIVELOW            {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVELOW);}
-    ;
-
-InterruptTypeKeyword
-    : PARSEOP_INTTYPE_EDGE                  {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_EDGE);}
-    | PARSEOP_INTTYPE_LEVEL                 {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_LEVEL);}
-    ;
-
-IODecodeKeyword
-    : PARSEOP_IODECODETYPE_16               {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_16);}
-    | PARSEOP_IODECODETYPE_10               {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_10);}
-    ;
-
-IoRestrictionKeyword
-    : PARSEOP_IORESTRICT_IN                 {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_IN);}
-    | PARSEOP_IORESTRICT_OUT                {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_OUT);}
-    | PARSEOP_IORESTRICT_NONE               {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_NONE);}
-    | PARSEOP_IORESTRICT_PRESERVE           {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_PRESERVE);}
-    ;
-
-LockRuleKeyword
-    : PARSEOP_LOCKRULE_LOCK                 {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_LOCK);}
-    | PARSEOP_LOCKRULE_NOLOCK               {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_NOLOCK);}
-    ;
-
-MatchOpKeyword
-    : PARSEOP_MATCHTYPE_MTR                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MTR);}
-    | PARSEOP_MATCHTYPE_MEQ                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MEQ);}
-    | PARSEOP_MATCHTYPE_MLE                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLE);}
-    | PARSEOP_MATCHTYPE_MLT                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLT);}
-    | PARSEOP_MATCHTYPE_MGE                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGE);}
-    | PARSEOP_MATCHTYPE_MGT                 {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGT);}
-    ;
-
-MaxKeyword
-    : PARSEOP_MAXTYPE_FIXED                 {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_FIXED);}
-    | PARSEOP_MAXTYPE_NOTFIXED              {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_NOTFIXED);}
-    ;
-
-MemTypeKeyword
-    : PARSEOP_MEMTYPE_CACHEABLE             {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_CACHEABLE);}
-    | PARSEOP_MEMTYPE_WRITECOMBINING        {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_WRITECOMBINING);}
-    | PARSEOP_MEMTYPE_PREFETCHABLE          {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_PREFETCHABLE);}
-    | PARSEOP_MEMTYPE_NONCACHEABLE          {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_NONCACHEABLE);}
-    ;
-
-MinKeyword
-    : PARSEOP_MINTYPE_FIXED                 {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_FIXED);}
-    | PARSEOP_MINTYPE_NOTFIXED              {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_NOTFIXED);}
-    ;
-
-ObjectTypeKeyword
-    : PARSEOP_OBJECTTYPE_UNK                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
-    | PARSEOP_OBJECTTYPE_INT                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_INT);}
-    | PARSEOP_OBJECTTYPE_STR                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_STR);}
-    | PARSEOP_OBJECTTYPE_BUF                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BUF);}
-    | PARSEOP_OBJECTTYPE_PKG                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PKG);}
-    | PARSEOP_OBJECTTYPE_FLD                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_FLD);}
-    | PARSEOP_OBJECTTYPE_DEV                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DEV);}
-    | PARSEOP_OBJECTTYPE_EVT                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_EVT);}
-    | PARSEOP_OBJECTTYPE_MTH                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTH);}
-    | PARSEOP_OBJECTTYPE_MTX                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTX);}
-    | PARSEOP_OBJECTTYPE_OPR                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_OPR);}
-    | PARSEOP_OBJECTTYPE_POW                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_POW);}
-    | PARSEOP_OBJECTTYPE_PRO                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PRO);}
-    | PARSEOP_OBJECTTYPE_THZ                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_THZ);}
-    | PARSEOP_OBJECTTYPE_BFF                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BFF);}
-    | PARSEOP_OBJECTTYPE_DDB                {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DDB);}
-    ;
-
-ParityTypeKeyword
-    : PARSEOP_PARITYTYPE_SPACE              {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_SPACE);}
-    | PARSEOP_PARITYTYPE_MARK               {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_MARK);}
-    | PARSEOP_PARITYTYPE_ODD                {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_ODD);}
-    | PARSEOP_PARITYTYPE_EVEN               {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_EVEN);}
-    | PARSEOP_PARITYTYPE_NONE               {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_NONE);}
-    ;
-
-PinConfigByte
-    : PinConfigKeyword                      {$$ = $1;}
-    | ByteConstExpr                         {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
-    ;
-
-PinConfigKeyword
-    : PARSEOP_PIN_NOPULL                    {$$ = TrCreateLeafNode (PARSEOP_PIN_NOPULL);}
-    | PARSEOP_PIN_PULLDOWN                  {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLDOWN);}
-    | PARSEOP_PIN_PULLUP                    {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLUP);}
-    | PARSEOP_PIN_PULLDEFAULT               {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLDEFAULT);}
-    ;
-
-PldKeyword
-    : PARSEOP_PLD_REVISION                  {$$ = TrCreateLeafNode (PARSEOP_PLD_REVISION);}
-    | PARSEOP_PLD_IGNORECOLOR               {$$ = TrCreateLeafNode (PARSEOP_PLD_IGNORECOLOR);}
-    | PARSEOP_PLD_RED                       {$$ = TrCreateLeafNode (PARSEOP_PLD_RED);}
-    | PARSEOP_PLD_GREEN                     {$$ = TrCreateLeafNode (PARSEOP_PLD_GREEN);}
-    | PARSEOP_PLD_BLUE                      {$$ = TrCreateLeafNode (PARSEOP_PLD_BLUE);}
-    | PARSEOP_PLD_WIDTH                     {$$ = TrCreateLeafNode (PARSEOP_PLD_WIDTH);}
-    | PARSEOP_PLD_HEIGHT                    {$$ = TrCreateLeafNode (PARSEOP_PLD_HEIGHT);}
-    | PARSEOP_PLD_USERVISIBLE               {$$ = TrCreateLeafNode (PARSEOP_PLD_USERVISIBLE);}
-    | PARSEOP_PLD_DOCK                      {$$ = TrCreateLeafNode (PARSEOP_PLD_DOCK);}
-    | PARSEOP_PLD_LID                       {$$ = TrCreateLeafNode (PARSEOP_PLD_LID);}
-    | PARSEOP_PLD_PANEL                     {$$ = TrCreateLeafNode (PARSEOP_PLD_PANEL);}
-    | PARSEOP_PLD_VERTICALPOSITION          {$$ = TrCreateLeafNode (PARSEOP_PLD_VERTICALPOSITION);}
-    | PARSEOP_PLD_HORIZONTALPOSITION        {$$ = TrCreateLeafNode (PARSEOP_PLD_HORIZONTALPOSITION);}
-    | PARSEOP_PLD_SHAPE                     {$$ = TrCreateLeafNode (PARSEOP_PLD_SHAPE);}
-    | PARSEOP_PLD_GROUPORIENTATION          {$$ = TrCreateLeafNode (PARSEOP_PLD_GROUPORIENTATION);}
-    | PARSEOP_PLD_GROUPTOKEN                {$$ = TrCreateLeafNode (PARSEOP_PLD_GROUPTOKEN);}
-    | PARSEOP_PLD_GROUPPOSITION             {$$ = TrCreateLeafNode (PARSEOP_PLD_GROUPPOSITION);}
-    | PARSEOP_PLD_BAY                       {$$ = TrCreateLeafNode (PARSEOP_PLD_BAY);}
-    | PARSEOP_PLD_EJECTABLE                 {$$ = TrCreateLeafNode (PARSEOP_PLD_EJECTABLE);}
-    | PARSEOP_PLD_EJECTREQUIRED             {$$ = TrCreateLeafNode (PARSEOP_PLD_EJECTREQUIRED);}
-    | PARSEOP_PLD_CABINETNUMBER             {$$ = TrCreateLeafNode (PARSEOP_PLD_CABINETNUMBER);}
-    | PARSEOP_PLD_CARDCAGENUMBER            {$$ = TrCreateLeafNode (PARSEOP_PLD_CARDCAGENUMBER);}
-    | PARSEOP_PLD_REFERENCE                 {$$ = TrCreateLeafNode (PARSEOP_PLD_REFERENCE);}
-    | PARSEOP_PLD_ROTATION                  {$$ = TrCreateLeafNode (PARSEOP_PLD_ROTATION);}
-    | PARSEOP_PLD_ORDER                     {$$ = TrCreateLeafNode (PARSEOP_PLD_ORDER);}
-    | PARSEOP_PLD_RESERVED                  {$$ = TrCreateLeafNode (PARSEOP_PLD_RESERVED);}
-    | PARSEOP_PLD_VERTICALOFFSET            {$$ = TrCreateLeafNode (PARSEOP_PLD_VERTICALOFFSET);}
-    | PARSEOP_PLD_HORIZONTALOFFSET          {$$ = TrCreateLeafNode (PARSEOP_PLD_HORIZONTALOFFSET);}
-    ;
-
-RangeTypeKeyword
-    : PARSEOP_RANGETYPE_ISAONLY             {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ISAONLY);}
-    | PARSEOP_RANGETYPE_NONISAONLY          {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_NONISAONLY);}
-    | PARSEOP_RANGETYPE_ENTIRE              {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ENTIRE);}
-    ;
-
-RegionSpaceKeyword
-    : PARSEOP_REGIONSPACE_IO                {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IO);}
-    | PARSEOP_REGIONSPACE_MEM               {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_MEM);}
-    | PARSEOP_REGIONSPACE_PCI               {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCI);}
-    | PARSEOP_REGIONSPACE_EC                {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_EC);}
-    | PARSEOP_REGIONSPACE_SMBUS             {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_SMBUS);}
-    | PARSEOP_REGIONSPACE_CMOS              {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_CMOS);}
-    | PARSEOP_REGIONSPACE_PCIBAR            {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCIBAR);}
-    | PARSEOP_REGIONSPACE_IPMI              {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IPMI);}
-    | PARSEOP_REGIONSPACE_GPIO              {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_GPIO);}
-    | PARSEOP_REGIONSPACE_GSBUS             {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_GSBUS);}
-    | PARSEOP_REGIONSPACE_PCC               {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCC);}
-    | PARSEOP_REGIONSPACE_FFIXEDHW          {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_FFIXEDHW);}
-    ;
-
-ResourceTypeKeyword
-    : PARSEOP_RESOURCETYPE_CONSUMER         {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
-    | PARSEOP_RESOURCETYPE_PRODUCER         {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_PRODUCER);}
-    ;
-
-SerializeRuleKeyword
-    : PARSEOP_SERIALIZERULE_SERIAL          {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_SERIAL);}
-    | PARSEOP_SERIALIZERULE_NOTSERIAL       {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL);}
-    ;
-
-ShareTypeKeyword
-    : PARSEOP_SHARETYPE_SHARED              {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHARED);}
-    | PARSEOP_SHARETYPE_EXCLUSIVE           {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVE);}
-    | PARSEOP_SHARETYPE_SHAREDWAKE          {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHAREDWAKE);}
-    | PARSEOP_SHARETYPE_EXCLUSIVEWAKE       {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVEWAKE);}
-   ;
-
-SlaveModeKeyword
-    : PARSEOP_SLAVEMODE_CONTROLLERINIT      {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_CONTROLLERINIT);}
-    | PARSEOP_SLAVEMODE_DEVICEINIT          {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_DEVICEINIT);}
-    ;
-
-StopBitsKeyword
-    : PARSEOP_STOPBITS_TWO                  {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_TWO);}
-    | PARSEOP_STOPBITS_ONEPLUSHALF          {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ONEPLUSHALF);}
-    | PARSEOP_STOPBITS_ONE                  {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ONE);}
-    | PARSEOP_STOPBITS_ZERO                 {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ZERO);}
-    ;
-
-TranslationKeyword
-    : PARSEOP_TRANSLATIONTYPE_SPARSE        {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_SPARSE);}
-    | PARSEOP_TRANSLATIONTYPE_DENSE         {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_DENSE);}
-    ;
-
-TypeKeyword
-    : PARSEOP_TYPE_TRANSLATION              {$$ = TrCreateLeafNode (PARSEOP_TYPE_TRANSLATION);}
-    | PARSEOP_TYPE_STATIC                   {$$ = TrCreateLeafNode (PARSEOP_TYPE_STATIC);}
-    ;
-
-UpdateRuleKeyword
-    : PARSEOP_UPDATERULE_PRESERVE           {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_PRESERVE);}
-    | PARSEOP_UPDATERULE_ONES               {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ONES);}
-    | PARSEOP_UPDATERULE_ZEROS              {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ZEROS);}
-    ;
-
-WireModeKeyword
-    : PARSEOP_WIREMODE_FOUR                 {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_FOUR);}
-    | PARSEOP_WIREMODE_THREE                {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_THREE);}
-    ;
-
-XferSizeKeyword
-    : PARSEOP_XFERSIZE_8                    {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_8,   0);}
-    | PARSEOP_XFERSIZE_16                   {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_16,  1);}
-    | PARSEOP_XFERSIZE_32                   {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32,  2);}
-    | PARSEOP_XFERSIZE_64                   {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_64,  3);}
-    | PARSEOP_XFERSIZE_128                  {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_128, 4);}
-    | PARSEOP_XFERSIZE_256                  {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_256, 5);}
-    ;
-
-XferTypeKeyword
-    : PARSEOP_XFERTYPE_8                    {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8);}
-    | PARSEOP_XFERTYPE_8_16                 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8_16);}
-    | PARSEOP_XFERTYPE_16                   {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_16);}
-    ;
-
 
 /*******************************************************************************
  *
@@ -363,15 +56,20 @@
  * Also, insert the EndTag at the end of the template.
  */
 ResourceTemplateTerm
-    : PARSEOP_RESOURCETEMPLATE '(' ')'
+    : PARSEOP_RESOURCETEMPLATE OptionalParentheses
         '{'
         ResourceMacroList '}'       {$$ = TrCreateNode (PARSEOP_RESOURCETEMPLATE,4,
                                           TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
                                           TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
-                                          $5,
+                                          $4,
                                           TrCreateLeafNode (PARSEOP_ENDTAG));}
     ;
 
+OptionalParentheses
+    :                               {$$ = NULL;}
+    | '(' ')'                       {$$ = NULL;}
+    ;
+
 ResourceMacroList
     :                               {$$ = NULL;}
     | ResourceMacroList
@@ -446,7 +144,8 @@
         OptionalNameString
         OptionalType
         OptionalTranslationType_Last
-        ')'                         {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
+        ')'                         {$$ = TrLinkChildren ($<n>3,15,
+                                        $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
     | PARSEOP_DWORDIO '('
         error ')'                   {$$ = AslDoError(); yyclearin;}
     ;
@@ -469,7 +168,8 @@
         OptionalNameString
         OptionalAddressRange
         OptionalType_Last
-        ')'                         {$$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
+        ')'                         {$$ = TrLinkChildren ($<n>3,16,
+                                        $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
     | PARSEOP_DWORDMEMORY '('
         error ')'                   {$$ = AslDoError(); yyclearin;}
     ;
@@ -490,7 +190,8 @@
         OptionalByteConstExpr
         OptionalStringData
         OptionalNameString_Last
-        ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
+        ')'                         {$$ = TrLinkChildren ($<n>3,14,
+                                        $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
     | PARSEOP_DWORDSPACE '('
         error ')'                   {$$ = AslDoError(); yyclearin;}
     ;
@@ -518,7 +219,8 @@
         OptionalNameString
         OptionalType
         OptionalTranslationType_Last
-        ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22);}
+        ')'                         {$$ = TrLinkChildren ($<n>3,14,
+                                        $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22);}
     | PARSEOP_EXTENDEDIO '('
         error ')'                   {$$ = AslDoError(); yyclearin;}
     ;
@@ -540,7 +242,8 @@
         OptionalNameString
         OptionalAddressRange
         OptionalType_Last
-        ')'                         {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24);}
+        ')'                         {$$ = TrLinkChildren ($<n>3,15,
+                                        $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24);}
     | PARSEOP_EXTENDEDMEMORY '('
         error ')'                   {$$ = AslDoError(); yyclearin;}
     ;
@@ -560,7 +263,8 @@
         ',' QWordConstExpr
         OptionalQWordConstExpr
         OptionalNameString_Last
-        ')'                         {$$ = TrLinkChildren ($<n>3,13,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23);}
+        ')'                         {$$ = TrLinkChildren ($<n>3,13,
+                                        $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23);}
     | PARSEOP_EXTENDEDSPACE '('
         error ')'                   {$$ = AslDoError(); yyclearin;}
     ;
@@ -599,7 +303,8 @@
         OptionalNameString          /* 15: DescriptorName */
         OptionalBuffer_Last         /* 16: VendorData */
         ')' '{'
-            DWordConstExpr '}'      {$$ = TrLinkChildren ($<n>3,11,$4,$6,$7,$9,$10,$12,$13,$14,$15,$16,$19);}
+            DWordConstExpr '}'      {$$ = TrLinkChildren ($<n>3,11,
+                                        $4,$6,$7,$9,$10,$12,$13,$14,$15,$16,$19);}
     | PARSEOP_GPIO_INT '('
         error ')'                   {$$ = AslDoError(); yyclearin;}
     ;
@@ -617,7 +322,8 @@
         OptionalNameString          /* 14: DescriptorName */
         OptionalBuffer_Last         /* 15: VendorData */
         ')' '{'
-            DWordList '}'           {$$ = TrLinkChildren ($<n>3,11,$4,$6,$7,$8,$9,$11,$12,$13,$14,$15,$18);}
+            DWordList '}'           {$$ = TrLinkChildren ($<n>3,11,
+                                        $4,$6,$7,$8,$9,$11,$12,$13,$14,$15,$18);}
     | PARSEOP_GPIO_IO '('
         error ')'                   {$$ = AslDoError(); yyclearin;}
     ;
@@ -633,7 +339,8 @@
         OptionalResourceType        /* 12: ResourceType */
         OptionalNameString          /* 13: DescriptorName */
         OptionalBuffer_Last         /* 14: VendorData */
-        ')'                         {$$ = TrLinkChildren ($<n>3,10,$4,$5,$7,$8,$10,$11,$12,$13,
+        ')'                         {$$ = TrLinkChildren ($<n>3,10,
+                                        $4,$5,$7,$8,$10,$11,$12,$13,
                                         TrCreateLeafNode (PARSEOP_DEFAULT_ARG),$14);}
     | PARSEOP_I2C_SERIALBUS '('
         error ')'                   {$$ = AslDoError(); yyclearin;}
@@ -651,8 +358,8 @@
         OptionalNameString          /* 13: DescriptorName */
         OptionalShareType           /* 14: Share */
         OptionalBuffer_Last         /* 15: VendorData */
-        ')'                         {$$ = TrLinkChildren ($<n>3,10,$4,$5,$7,$8,$10,$11,$12,$13,
-                                        $14,$15);}
+        ')'                         {$$ = TrLinkChildren ($<n>3,10,
+                                        $4,$5,$7,$8,$10,$11,$12,$13,$14,$15);}
     | PARSEOP_I2C_SERIALBUS_V2 '('
         error ')'                   {$$ = AslDoError(); yyclearin;}
     ;
@@ -667,7 +374,8 @@
         OptionalStringData
         OptionalNameString_Last
         ')' '{'
-            DWordList '}'           {$$ = TrLinkChildren ($<n>3,8,$4,$6,$8,$9,$10,$11,$12,$15);}
+            DWordList '}'           {$$ = TrLinkChildren ($<n>3,8,
+                                        $4,$6,$8,$9,$10,$11,$12,$15);}
     | PARSEOP_INTERRUPT '('
         error ')'                   {$$ = AslDoError(); yyclearin;}
     ;
@@ -760,7 +468,8 @@
         OptionalNameString
         OptionalType
         OptionalTranslationType_Last
-        ')'                         {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
+        ')'                         {$$ = TrLinkChildren ($<n>3,15,
+                                        $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
     | PARSEOP_QWORDIO '('
         error ')'                   {$$ = AslDoError(); yyclearin;}
     ;
@@ -783,7 +492,8 @@
         OptionalNameString
         OptionalAddressRange
         OptionalType_Last
-        ')'                         {$$ = TrLinkChildren ($<n>3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
+        ')'                         {$$ = TrLinkChildren ($<n>3,16,
+                                        $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);}
     | PARSEOP_QWORDMEMORY '('
         error ')'                   {$$ = AslDoError(); yyclearin;}
     ;
@@ -804,7 +514,8 @@
         OptionalByteConstExpr
         OptionalStringData
         OptionalNameString_Last
-        ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
+        ')'                         {$$ = TrLinkChildren ($<n>3,14,
+                                        $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
     | PARSEOP_QWORDSPACE '('
         error ')'                   {$$ = AslDoError(); yyclearin;}
     ;
@@ -837,7 +548,8 @@
         OptionalResourceType        /* 19: ResourceType */
         OptionalNameString          /* 20: DescriptorName */
         OptionalBuffer_Last         /* 21: VendorData */
-        ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,
+        ')'                         {$$ = TrLinkChildren ($<n>3,14,
+                                        $4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,
                                         TrCreateLeafNode (PARSEOP_DEFAULT_ARG),$21);}
     | PARSEOP_SPI_SERIALBUS '('
         error ')'                   {$$ = AslDoError(); yyclearin;}
@@ -859,8 +571,8 @@
         OptionalNameString          /* 20: DescriptorName */
         OptionalShareType           /* 21: Share */
         OptionalBuffer_Last         /* 22: VendorData */
-        ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,
-                                        $21,$22);}
+        ')'                         {$$ = TrLinkChildren ($<n>3,14,
+                                        $4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,$21,$22);}
     | PARSEOP_SPI_SERIALBUS_V2 '('
         error ')'                   {$$ = AslDoError(); yyclearin;}
     ;
@@ -899,7 +611,8 @@
         OptionalResourceType        /* 19: ResourceType */
         OptionalNameString          /* 20: DescriptorName */
         OptionalBuffer_Last         /* 21: VendorData */
-        ')'                         {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,
+        ')'                         {$$ = TrLinkChildren ($<n>3,15,
+                                        $4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,
                                         TrCreateLeafNode (PARSEOP_DEFAULT_ARG),$21);}
     | PARSEOP_UART_SERIALBUS '('
         error ')'                   {$$ = AslDoError(); yyclearin;}
@@ -922,8 +635,8 @@
         OptionalNameString          /* 20: DescriptorName */
         OptionalShareType           /* 21: Share */
         OptionalBuffer_Last         /* 22: VendorData */
-        ')'                         {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,
-                                        $21,$22);}
+        ')'                         {$$ = TrLinkChildren ($<n>3,15,
+                                        $4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,$21,$22);}
     | PARSEOP_UART_SERIALBUS_V2 '('
         error ')'                   {$$ = AslDoError(); yyclearin;}
     ;
@@ -960,7 +673,8 @@
         OptionalByteConstExpr
         OptionalStringData
         OptionalNameString_Last
-        ')'                         {$$ = TrLinkChildren ($<n>3,12,$4,$5,$6,$7,$9,$11,$13,$15,$17,$18,$19,$20);}
+        ')'                         {$$ = TrLinkChildren ($<n>3,12,
+                                        $4,$5,$6,$7,$9,$11,$13,$15,$17,$18,$19,$20);}
     | PARSEOP_WORDBUSNUMBER '('
         error ')'                   {$$ = AslDoError(); yyclearin;}
     ;
@@ -982,7 +696,8 @@
         OptionalNameString
         OptionalType
         OptionalTranslationType_Last
-        ')'                         {$$ = TrLinkChildren ($<n>3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
+        ')'                         {$$ = TrLinkChildren ($<n>3,15,
+                                        $4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);}
     | PARSEOP_WORDIO '('
         error ')'                   {$$ = AslDoError(); yyclearin;}
     ;
@@ -1003,246 +718,8 @@
         OptionalByteConstExpr
         OptionalStringData
         OptionalNameString_Last
-        ')'                         {$$ = TrLinkChildren ($<n>3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
+        ')'                         {$$ = TrLinkChildren ($<n>3,14,
+                                        $4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);}
     | PARSEOP_WORDSPACE '('
         error ')'                   {$$ = AslDoError(); yyclearin;}
     ;
-
-
-/******* Object References ***********************************************/
-
-/* Allow IO, DMA, IRQ Resource macro names to also be used as identifiers */
-
-NameString
-    : NameSeg                       {}
-    | PARSEOP_NAMESTRING            {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) AslCompilerlval.s);}
-    | PARSEOP_IO                    {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IO");}
-    | PARSEOP_DMA                   {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "DMA");}
-    | PARSEOP_IRQ                   {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IRQ");}
-    ;
-
-NameSeg
-    : PARSEOP_NAMESEG               {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESEG, (ACPI_NATIVE_INT) AslCompilerlval.s);}
-    ;
-
-
-/*******************************************************************************
- *
- * ASL Helper Terms
- *
- ******************************************************************************/
-
-OptionalBusMasterKeyword
-    : ','                                       {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
-    | ',' PARSEOP_BUSMASTERTYPE_MASTER          {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);}
-    | ',' PARSEOP_BUSMASTERTYPE_NOTMASTER       {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_NOTMASTER);}
-    ;
-
-OptionalAccessAttribTerm
-    :                               {$$ = NULL;}
-    | ','                           {$$ = NULL;}
-    | ',' ByteConstExpr             {$$ = $2;}
-    | ',' AccessAttribKeyword       {$$ = $2;}
-    ;
-
-OptionalAccessSize
-    :                               {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);}
-    | ','                           {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);}
-    | ',' ByteConstExpr             {$$ = $2;}
-    ;
-
-OptionalAddressingMode
-    : ','                           {$$ = NULL;}
-    | ',' AddressingModeKeyword     {$$ = $2;}
-    ;
-
-OptionalAddressRange
-    :                               {$$ = NULL;}
-    | ','                           {$$ = NULL;}
-    | ',' AddressKeyword            {$$ = $2;}
-    ;
-
-OptionalBitsPerByte
-    : ','                           {$$ = NULL;}
-    | ',' BitsPerByteKeyword        {$$ = $2;}
-    ;
-
-OptionalBuffer_Last
-    :                               {$$ = NULL;}
-    | ','                           {$$ = NULL;}
-    | ',' RawDataBufferTerm         {$$ = $2;}
-    ;
-
-OptionalByteConstExpr
-    :                               {$$ = NULL;}
-    | ','                           {$$ = NULL;}
-    | ',' ByteConstExpr             {$$ = $2;}
-    ;
-
-OptionalDecodeType
-    : ','                           {$$ = NULL;}
-    | ',' DecodeKeyword             {$$ = $2;}
-    ;
-
-OptionalDevicePolarity
-    : ','                           {$$ = NULL;}
-    | ',' DevicePolarityKeyword     {$$ = $2;}
-    ;
-
-OptionalDWordConstExpr
-    :                               {$$ = NULL;}
-    | ','                           {$$ = NULL;}
-    | ',' DWordConstExpr            {$$ = $2;}
-    ;
-
-OptionalEndian
-    : ','                           {$$ = NULL;}
-    | ',' EndianKeyword             {$$ = $2;}
-    ;
-
-OptionalFlowControl
-    : ','                           {$$ = NULL;}
-    | ',' FlowControlKeyword        {$$ = $2;}
-    ;
-
-OptionalIoRestriction
-    : ','                           {$$ = NULL;}
-    | ',' IoRestrictionKeyword      {$$ = $2;}
-    ;
-
-OptionalListString
-    :                               {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));}   /* Placeholder is a NULL string */
-    | ','                           {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));}   /* Placeholder is a NULL string */
-    | ',' TermArg                   {$$ = $2;}
-    ;
-
-OptionalMaxType
-    : ','                           {$$ = NULL;}
-    | ',' MaxKeyword                {$$ = $2;}
-    ;
-
-OptionalMemType
-    : ','                           {$$ = NULL;}
-    | ',' MemTypeKeyword            {$$ = $2;}
-    ;
-
-OptionalMinType
-    : ','                           {$$ = NULL;}
-    | ',' MinKeyword                {$$ = $2;}
-    ;
-
-OptionalNameString
-    :                               {$$ = NULL;}
-    | ','                           {$$ = NULL;}
-    | ',' NameString                {$$ = $2;}
-    ;
-
-OptionalNameString_Last
-    :                               {$$ = NULL;}
-    | ','                           {$$ = NULL;}
-    | ',' NameString                {$$ = $2;}
-    ;
-
-OptionalNameString_First
-    :                               {$$ = TrCreateLeafNode (PARSEOP_ZERO);}
-    | NameString                    {$$ = $1;}
-    ;
-
-OptionalObjectTypeKeyword
-    :                               {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);}
-    | ',' ObjectTypeKeyword         {$$ = $2;}
-    ;
-
-OptionalParityType
-    : ','                           {$$ = NULL;}
-    | ',' ParityTypeKeyword         {$$ = $2;}
-    ;
-
-OptionalQWordConstExpr
-    :                               {$$ = NULL;}
-    | ','                           {$$ = NULL;}
-    | ',' QWordConstExpr            {$$ = $2;}
-    ;
-
-OptionalRangeType
-    : ','                           {$$ = NULL;}
-    | ',' RangeTypeKeyword          {$$ = $2;}
-    ;
-
-OptionalReadWriteKeyword
-    :                                   {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
-    | PARSEOP_READWRITETYPE_BOTH        {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);}
-    | PARSEOP_READWRITETYPE_READONLY    {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_READONLY);}
-    ;
-
-OptionalResourceType_First
-    :                               {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
-    | ResourceTypeKeyword           {$$ = $1;}
-    ;
-
-OptionalResourceType
-    :                               {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
-    | ','                           {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);}
-    | ',' ResourceTypeKeyword       {$$ = $2;}
-    ;
-
-OptionalSlaveMode
-    : ','                           {$$ = NULL;}
-    | ',' SlaveModeKeyword          {$$ = $2;}
-    ;
-
-OptionalShareType
-    :                               {$$ = NULL;}
-    | ','                           {$$ = NULL;}
-    | ',' ShareTypeKeyword          {$$ = $2;}
-    ;
-
-OptionalShareType_First
-    :                               {$$ = NULL;}
-    | ShareTypeKeyword              {$$ = $1;}
-    ;
-
-OptionalStopBits
-    : ','                           {$$ = NULL;}
-    | ',' StopBitsKeyword           {$$ = $2;}
-    ;
-
-OptionalStringData
-    :                               {$$ = NULL;}
-    | ','                           {$$ = NULL;}
-    | ',' StringData                {$$ = $2;}
-    ;
-
-OptionalTranslationType_Last
-    :                               {$$ = NULL;}
-    | ','                           {$$ = NULL;}
-    | ',' TranslationKeyword        {$$ = $2;}
-    ;
-
-OptionalType
-    :                               {$$ = NULL;}
-    | ','                           {$$ = NULL;}
-    | ',' TypeKeyword               {$$ = $2;}
-    ;
-
-OptionalType_Last
-    :                               {$$ = NULL;}
-    | ','                           {$$ = NULL;}
-    | ',' TypeKeyword               {$$ = $2;}
-    ;
-
-OptionalWireMode
-    : ','                           {$$ = NULL;}
-    | ',' WireModeKeyword           {$$ = $2;}
-    ;
-
-OptionalWordConstExpr
-    : ','                           {$$ = NULL;}
-    | ',' WordConstExpr             {$$ = $2;}
-    ;
-
-OptionalXferSize
-    :                               {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);}
-    | ','                           {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);}
-    | ',' XferSizeKeyword           {$$ = $2;}
-    ;
--- a/sys/external/bsd/acpica/dist/compiler/aslrules.y	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/aslrules.y	Fri Nov 11 19:14:16 2016 +0000
@@ -55,7 +55,8 @@
  * to handle output from preprocessors
  */
 AslCode
-    : DefinitionBlockList           {$<n>$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_ASL_CODE),1, $1);}
+    : DefinitionBlockList           {$<n>$ = TrLinkChildren (
+                                        TrCreateLeafNode (PARSEOP_ASL_CODE),1, $1);}
     | error                         {YYABORT; $$ = NULL;}
     ;
 
@@ -88,7 +89,8 @@
         String ','
         DWordConst
         ')'                         {TrSetEndLineNumber ($<n>3);}
-            '{' TermList '}'        {$$ = TrLinkChildren ($<n>3,7,$4,$6,$8,$10,$12,$14,$18);}
+            '{' TermList '}'        {$$ = TrLinkChildren ($<n>3,7,
+                                        $4,$6,$8,$10,$12,$14,$18);}
     ;
 
 DefinitionBlockList
@@ -97,12 +99,36 @@
         DefinitionBlockList         {$$ = TrLinkPeerNodes (2, $1,$2);}
     ;
 
+/* Allow IO, DMA, IRQ Resource macro and FOR macro names to also be used as identifiers */
+
+NameString
+    : NameSeg                       {}
+    | PARSEOP_NAMESTRING            {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) $1);}
+    | PARSEOP_IO                    {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IO");}
+    | PARSEOP_DMA                   {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "DMA");}
+    | PARSEOP_IRQ                   {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IRQ");}
+    | PARSEOP_FOR                   {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "FOR");}
+    ;
+/*
+NameSeg
+    : PARSEOP_NAMESEG               {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESEG, (ACPI_NATIVE_INT)
+                                            TrNormalizeNameSeg ($1));}
+    ;
+*/
+
+NameSeg
+    : PARSEOP_NAMESEG               {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESEG,
+                                            (ACPI_NATIVE_INT) AslCompilerlval.s);}
+    ;
+
+
 SuperName
     : NameString                    {}
     | ArgTerm                       {}
     | LocalTerm                     {}
     | DebugTerm                     {}
     | Type6Opcode                   {}
+    ;
 
 Target
     :                               {$$ = TrCreateNullTarget ();} /* Placeholder is a ZeroOp object */
@@ -116,6 +142,8 @@
     | NameString                    {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
     | ArgTerm                       {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
     | LocalTerm                     {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);}
+
+
     ;
 
 /*
@@ -140,9 +168,26 @@
     | ',' TermArg                   {$$ = $2;}
     ;
 
-VarPackageLengthTerm
-    :                               {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
-    | TermArg                       {$$ = $1;}
+/*
+ * Data count for buffers and packages (byte count for buffers,
+ * element count for packages).
+ */
+OptionalDataCount
+
+        /* Legacy ASL */
+    :                               {$$ = NULL;}
+    | '(' TermArg ')'               {$$ = $2;}
+    | '('  ')'                      {$$ = NULL;}
+
+        /* C-style (ASL+) -- adds equals term */
+
+    |  PARSEOP_EXP_EQUALS           {$$ = NULL;}
+
+    | '(' TermArg ')'
+        PARSEOP_EXP_EQUALS          {$$ = $2;}
+
+    | '('  ')' String
+        PARSEOP_EXP_EQUALS          {$$ = NULL;}
     ;
 
 
@@ -197,6 +242,7 @@
     : CompilerDirective             {}
     | NamedObject                   {}
     | NameSpaceModifier             {}
+//    | StructureTerm                 {}
     ;
 
 PackageList
@@ -229,7 +275,8 @@
 
 OptionalParameterTypePackage
     :                               {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
-    | ',' ParameterTypePackageList  {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
+    | ',' ParameterTypePackageList  {$$ = TrLinkChildren (
+                                        TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
     ;
 
     /* Rules for specifying the types for method arguments */
@@ -248,17 +295,22 @@
 
 OptionalParameterTypesPackage
     :                               {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);}
-    | ',' ParameterTypesPackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
+    | ',' ParameterTypesPackageList {$$ = TrLinkChildren (
+                                        TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);}
     ;
 
     /* ACPI 3.0 -- allow semicolons between terms */
 
 TermList
     :                               {$$ = NULL;}
-    | TermList Term                 {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
-    | TermList Term ';'             {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
-    | TermList ';' Term             {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
-    | TermList ';' Term ';'         {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
+    | TermList Term                 {$$ = TrLinkPeerNode (
+                                        TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
+    | TermList Term ';'             {$$ = TrLinkPeerNode (
+                                        TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);}
+    | TermList ';' Term             {$$ = TrLinkPeerNode (
+                                        TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
+    | TermList ';' Term ';'         {$$ = TrLinkPeerNode (
+                                        TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);}
     ;
 
 Term
@@ -366,29 +418,37 @@
  * constant folding code in the node AmlLength field.
  */
 ByteConstExpr
-    : Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 1);}
-    | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 1);}
+    : Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);
+                                        TrSetNodeAmlLength ($1, 1);}
+    | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);
+                                        TrSetNodeAmlLength ($1, 1);}
     | ConstExprTerm                 {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);}
     | ByteConst                     {}
     ;
 
 WordConstExpr
-    : Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 2);}
-    | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 2);}
+    : Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);
+                                        TrSetNodeAmlLength ($1, 2);}
+    | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);
+                                        TrSetNodeAmlLength ($1, 2);}
     | ConstExprTerm                 {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);}
     | WordConst                     {}
     ;
 
 DWordConstExpr
-    : Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 4);}
-    | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 4);}
+    : Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);
+                                        TrSetNodeAmlLength ($1, 4);}
+    | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);
+                                        TrSetNodeAmlLength ($1, 4);}
     | ConstExprTerm                 {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);}
     | DWordConst                    {}
     ;
 
 QWordConstExpr
-    : Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 8);}
-    | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 8);}
+    : Type3Opcode                   {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);
+                                        TrSetNodeAmlLength ($1, 8);}
+    | Type2IntegerOpcode            {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);
+                                        TrSetNodeAmlLength ($1, 8);}
     | ConstExprTerm                 {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);}
     | QWordConst                    {}
     ;
@@ -409,11 +469,13 @@
     ;
 
 Integer
-    : PARSEOP_INTEGER               {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER, AslCompilerlval.i);}
+    : PARSEOP_INTEGER               {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER,
+                                        AslCompilerlval.i);}
     ;
 
 String
-    : PARSEOP_STRING_LITERAL        {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, (ACPI_NATIVE_INT) AslCompilerlval.s);}
+    : PARSEOP_STRING_LITERAL        {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL,
+                                        (ACPI_NATIVE_INT) AslCompilerlval.s);}
     ;
 
 
@@ -454,6 +516,7 @@
 NameSpaceModifier
     : AliasTerm                     {}
     | NameTerm                      {}
+//    | NameTermAslPlus               {}
     | ScopeTerm                     {}
     ;
 
@@ -467,6 +530,7 @@
     | RefOfTerm                     {}
     | DerefOfTerm                   {}
     | IndexTerm                     {}
+    | IndexExpTerm                  {}
 /*    | MethodInvocationTerm          {} */  /* Caused reduce/reduce with Type6Opcode->MethodInvocationTerm */
     ;
 
@@ -532,6 +596,8 @@
     | FromBCDTerm                   {}
     | IncTerm                       {}
     | IndexTerm                     {}
+//    | StructureIndexTerm            {}
+//    | StructurePointerTerm          {}
     | LAndTerm                      {}
     | LEqualTerm                    {}
     | LGreaterTerm                  {}
@@ -592,6 +658,8 @@
     ;
 */
 
+/* Type 5 opcodes are a subset of Type2 opcodes, and return a constant */
+
 Type5Opcode
     : ResourceTemplateTerm          {}
     | UnicodeTerm                   {}
@@ -604,1103 +672,21 @@
     | DerefOfTerm                   {}
     | IndexTerm                     {}
     | IndexExpTerm                  {}
+//    | StructureIndexTerm            {}
+//    | StructurePointerTerm          {}
     | MethodInvocationTerm          {}
     ;
 
 
 /*******************************************************************************
  *
- * ASL Primary Terms
- *
- ******************************************************************************/
-
-AccessAsTerm
-    : PARSEOP_ACCESSAS '('
-        AccessTypeKeyword
-        OptionalAccessAttribTerm
-        ')'                         {$$ = TrCreateNode (PARSEOP_ACCESSAS,2,$3,$4);}
-    | PARSEOP_ACCESSAS '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-AcquireTerm
-    : PARSEOP_ACQUIRE '('           {$<n>$ = TrCreateLeafNode (PARSEOP_ACQUIRE);}
-        SuperName
-        ',' WordConstExpr
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$6);}
-    | PARSEOP_ACQUIRE '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-AddTerm
-    : PARSEOP_ADD '('               {$<n>$ = TrCreateLeafNode (PARSEOP_ADD);}
-        TermArg
-        TermArgItem
-        Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
-    | PARSEOP_ADD '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-AliasTerm
-    : PARSEOP_ALIAS '('             {$<n>$ = TrCreateLeafNode (PARSEOP_ALIAS);}
-        NameString
-        NameStringItem
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,
-                                        TrSetNodeFlags ($5, NODE_IS_NAME_DECLARATION));}
-    | PARSEOP_ALIAS '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-AndTerm
-    : PARSEOP_AND '('               {$<n>$ = TrCreateLeafNode (PARSEOP_AND);}
-        TermArg
-        TermArgItem
-        Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
-    | PARSEOP_AND '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-ArgTerm
-    : PARSEOP_ARG0                  {$$ = TrCreateLeafNode (PARSEOP_ARG0);}
-    | PARSEOP_ARG1                  {$$ = TrCreateLeafNode (PARSEOP_ARG1);}
-    | PARSEOP_ARG2                  {$$ = TrCreateLeafNode (PARSEOP_ARG2);}
-    | PARSEOP_ARG3                  {$$ = TrCreateLeafNode (PARSEOP_ARG3);}
-    | PARSEOP_ARG4                  {$$ = TrCreateLeafNode (PARSEOP_ARG4);}
-    | PARSEOP_ARG5                  {$$ = TrCreateLeafNode (PARSEOP_ARG5);}
-    | PARSEOP_ARG6                  {$$ = TrCreateLeafNode (PARSEOP_ARG6);}
-    ;
-
-BankFieldTerm
-    : PARSEOP_BANKFIELD '('         {$<n>$ = TrCreateLeafNode (PARSEOP_BANKFIELD);}
-        NameString
-        NameStringItem
-        TermArgItem
-        ',' AccessTypeKeyword
-        ',' LockRuleKeyword
-        ',' UpdateRuleKeyword
-        ')' '{'
-            FieldUnitList '}'       {$$ = TrLinkChildren ($<n>3,7,$4,$5,$6,$8,$10,$12,$15);}
-    | PARSEOP_BANKFIELD '('
-        error ')' '{' error '}'     {$$ = AslDoError(); yyclearin;}
-    ;
-
-BreakTerm
-    : PARSEOP_BREAK                 {$$ = TrCreateNode (PARSEOP_BREAK, 0);}
-    ;
-
-BreakPointTerm
-    : PARSEOP_BREAKPOINT            {$$ = TrCreateNode (PARSEOP_BREAKPOINT, 0);}
-    ;
-
-BufferTerm
-    : PARSEOP_BUFFER '('            {$<n>$ = TrCreateLeafNode (PARSEOP_BUFFER);}
-        OptionalBufferLength
-        ')' '{'
-            BufferTermData '}'      {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
-    | PARSEOP_BUFFER '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-BufferTermData
-    : ByteList                      {}
-    | StringData                    {}
-    ;
-
-CaseTerm
-    : PARSEOP_CASE '('              {$<n>$ = TrCreateLeafNode (PARSEOP_CASE);}
-        DataObject
-        ')' '{'
-            TermList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
-    | PARSEOP_CASE '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-ConcatTerm
-    : PARSEOP_CONCATENATE '('       {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATE);}
-        TermArg
-        TermArgItem
-        Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
-    | PARSEOP_CONCATENATE '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-ConcatResTerm
-    : PARSEOP_CONCATENATERESTEMPLATE '('    {$<n>$ = TrCreateLeafNode (PARSEOP_CONCATENATERESTEMPLATE);}
-        TermArg
-        TermArgItem
-        Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
-    | PARSEOP_CONCATENATERESTEMPLATE '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-ConnectionTerm
-    : PARSEOP_CONNECTION '('
-        NameString
-        ')'                         {$$ = TrCreateNode (PARSEOP_CONNECTION,1,$3);}
-    | PARSEOP_CONNECTION '('        {$<n>$ = TrCreateLeafNode (PARSEOP_CONNECTION);}
-        ResourceMacroTerm
-        ')'                         {$$ = TrLinkChildren ($<n>3, 1,
-                                            TrLinkChildren (TrCreateLeafNode (PARSEOP_RESOURCETEMPLATE), 3,
-                                                TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
-                                                TrCreateLeafNode (PARSEOP_DEFAULT_ARG),
-                                                $4));}
-    | PARSEOP_CONNECTION '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-CondRefOfTerm
-    : PARSEOP_CONDREFOF '('         {$<n>$ = TrCreateLeafNode (PARSEOP_CONDREFOF);}
-        SuperName
-        Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
-    | PARSEOP_CONDREFOF '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-ContinueTerm
-    : PARSEOP_CONTINUE              {$$ = TrCreateNode (PARSEOP_CONTINUE, 0);}
-    ;
-
-CopyObjectTerm
-    : PARSEOP_COPYOBJECT '('        {$<n>$ = TrCreateLeafNode (PARSEOP_COPYOBJECT);}
-        TermArg
-        ',' SimpleTarget
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
-    | PARSEOP_COPYOBJECT '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-CreateBitFieldTerm
-    : PARSEOP_CREATEBITFIELD '('    {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBITFIELD);}
-        TermArg
-        TermArgItem
-        NameStringItem
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
-    | PARSEOP_CREATEBITFIELD '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-CreateByteFieldTerm
-    : PARSEOP_CREATEBYTEFIELD '('   {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEBYTEFIELD);}
-        TermArg
-        TermArgItem
-        NameStringItem
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
-    | PARSEOP_CREATEBYTEFIELD '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-CreateDWordFieldTerm
-    : PARSEOP_CREATEDWORDFIELD '('  {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEDWORDFIELD);}
-        TermArg
-        TermArgItem
-        NameStringItem
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
-    | PARSEOP_CREATEDWORDFIELD '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-CreateFieldTerm
-    : PARSEOP_CREATEFIELD '('       {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEFIELD);}
-        TermArg
-        TermArgItem
-        TermArgItem
-        NameStringItem
-        ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,TrSetNodeFlags ($7, NODE_IS_NAME_DECLARATION));}
-    | PARSEOP_CREATEFIELD '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-CreateQWordFieldTerm
-    : PARSEOP_CREATEQWORDFIELD '('  {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEQWORDFIELD);}
-        TermArg
-        TermArgItem
-        NameStringItem
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
-    | PARSEOP_CREATEQWORDFIELD '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-CreateWordFieldTerm
-    : PARSEOP_CREATEWORDFIELD '('   {$<n>$ = TrCreateLeafNode (PARSEOP_CREATEWORDFIELD);}
-        TermArg
-        TermArgItem
-        NameStringItem
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));}
-    | PARSEOP_CREATEWORDFIELD '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-DataRegionTerm
-    : PARSEOP_DATATABLEREGION '('   {$<n>$ = TrCreateLeafNode (PARSEOP_DATATABLEREGION);}
-        NameString
-        TermArgItem
-        TermArgItem
-        TermArgItem
-        ')'                         {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$6,$7);}
-    | PARSEOP_DATATABLEREGION '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-DebugTerm
-    : PARSEOP_DEBUG                 {$$ = TrCreateLeafNode (PARSEOP_DEBUG);}
-    ;
-
-DecTerm
-    : PARSEOP_DECREMENT '('         {$<n>$ = TrCreateLeafNode (PARSEOP_DECREMENT);}
-        SuperName
-        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
-    | PARSEOP_DECREMENT '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-DefaultTerm
-    : PARSEOP_DEFAULT '{'           {$<n>$ = TrCreateLeafNode (PARSEOP_DEFAULT);}
-        TermList '}'                {$$ = TrLinkChildren ($<n>3,1,$4);}
-    | PARSEOP_DEFAULT '{'
-        error '}'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-DerefOfTerm
-    : PARSEOP_DEREFOF '('           {$<n>$ = TrCreateLeafNode (PARSEOP_DEREFOF);}
-        TermArg
-        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
-    | PARSEOP_DEREFOF '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-DeviceTerm
-    : PARSEOP_DEVICE '('            {$<n>$ = TrCreateLeafNode (PARSEOP_DEVICE);}
-        NameString
-        ')' '{'
-            TermList '}'            {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
-    | PARSEOP_DEVICE '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-DivideTerm
-    : PARSEOP_DIVIDE '('            {$<n>$ = TrCreateLeafNode (PARSEOP_DIVIDE);}
-        TermArg
-        TermArgItem
-        Target
-        Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
-    | PARSEOP_DIVIDE '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-EISAIDTerm
-    : PARSEOP_EISAID '('
-        StringData ')'              {$$ = TrUpdateNode (PARSEOP_EISAID, $3);}
-    | PARSEOP_EISAID '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-ElseIfTerm
-    : IfTerm ElseTerm               {$$ = TrLinkPeerNode ($1,$2);}
-    ;
-
-ElseTerm
-    :                               {$$ = NULL;}
-    | PARSEOP_ELSE '{'              {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
-        TermList '}'                {$$ = TrLinkChildren ($<n>3,1,$4);}
-
-    | PARSEOP_ELSE '{'
-        error '}'                   {$$ = AslDoError(); yyclearin;}
-
-    | PARSEOP_ELSE
-        error                       {$$ = AslDoError(); yyclearin;}
-
-    | PARSEOP_ELSEIF '('            {$<n>$ = TrCreateLeafNode (PARSEOP_ELSE);}
-        TermArg                     {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
-        ')' '{'
-            TermList '}'            {TrLinkChildren ($<n>5,2,$4,$8);}
-        ElseTerm                    {TrLinkPeerNode ($<n>5,$11);}
-                                    {$$ = TrLinkChildren ($<n>3,1,$<n>5);}
-
-    | PARSEOP_ELSEIF '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-
-    | PARSEOP_ELSEIF
-        error                       {$$ = AslDoError(); yyclearin;}
-    ;
-
-EventTerm
-    : PARSEOP_EVENT '('             {$<n>$ = TrCreateLeafNode (PARSEOP_EVENT);}
-        NameString
-        ')'                         {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION));}
-    | PARSEOP_EVENT '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-ExternalTerm
-    : PARSEOP_EXTERNAL '('
-        NameString
-        OptionalObjectTypeKeyword
-        OptionalParameterTypePackage
-        OptionalParameterTypesPackage
-        ')'                         {$$ = TrCreateNode (PARSEOP_EXTERNAL,4,$3,$4,$5,$6);}
-    | PARSEOP_EXTERNAL '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-FatalTerm
-    : PARSEOP_FATAL '('             {$<n>$ = TrCreateLeafNode (PARSEOP_FATAL);}
-        ByteConstExpr
-        ',' DWordConstExpr
-        TermArgItem
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
-    | PARSEOP_FATAL '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-FieldTerm
-    : PARSEOP_FIELD '('             {$<n>$ = TrCreateLeafNode (PARSEOP_FIELD);}
-        NameString
-        ',' AccessTypeKeyword
-        ',' LockRuleKeyword
-        ',' UpdateRuleKeyword
-        ')' '{'
-            FieldUnitList '}'       {$$ = TrLinkChildren ($<n>3,5,$4,$6,$8,$10,$13);}
-    | PARSEOP_FIELD '('
-        error ')' '{' error '}'     {$$ = AslDoError(); yyclearin;}
-    ;
-
-FindSetLeftBitTerm
-    : PARSEOP_FINDSETLEFTBIT '('    {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETLEFTBIT);}
-        TermArg
-        Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
-    | PARSEOP_FINDSETLEFTBIT '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-FindSetRightBitTerm
-    : PARSEOP_FINDSETRIGHTBIT '('   {$<n>$ = TrCreateLeafNode (PARSEOP_FINDSETRIGHTBIT);}
-        TermArg
-        Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
-    | PARSEOP_FINDSETRIGHTBIT '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-    /* Convert a For() loop to a While() loop */
-ForTerm
-    : PARSEOP_FOR '('               {$<n>$ = TrCreateLeafNode (PARSEOP_WHILE);}
-        OptionalTermArg ','         {}
-        OptionalPredicate ','
-        OptionalTermArg             {$<n>$ = TrLinkPeerNode ($4,$<n>3);
-                                        TrSetParent ($9,$<n>3);}                /* New parent is WHILE */
-        ')' '{' TermList '}'        {$<n>$ = TrLinkChildren ($<n>3,2,$7,$13);}
-                                    {$<n>$ = TrLinkPeerNode ($13,$9);
-                                        $$ = $<n>10;}
-    ;
-
-OptionalPredicate
-    :                               {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER, 1);}
-    | TermArg                       {$$ = $1;}
-    ;
-
-FprintfTerm
-    : PARSEOP_FPRINTF '('            {$<n>$ = TrCreateLeafNode (PARSEOP_FPRINTF);}
-        TermArg ','
-        StringData
-        PrintfArgList
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$6,$7);}
-    | PARSEOP_FPRINTF '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-FromBCDTerm
-    : PARSEOP_FROMBCD '('           {$<n>$ = TrCreateLeafNode (PARSEOP_FROMBCD);}
-        TermArg
-        Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
-    | PARSEOP_FROMBCD '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-FunctionTerm
-    : PARSEOP_FUNCTION '('          {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
-        NameString
-        OptionalParameterTypePackage
-        OptionalParameterTypesPackage
-        ')' '{'
-            TermList '}'            {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),
-                                        TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),
-                                        TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL),
-                                        TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),$5,$6,$9);}
-    | PARSEOP_FUNCTION '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-IfTerm
-    : PARSEOP_IF '('                {$<n>$ = TrCreateLeafNode (PARSEOP_IF);}
-        TermArg
-        ')' '{'
-            TermList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
-
-    | PARSEOP_IF '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-IncludeTerm
-    : PARSEOP_INCLUDE '('
-        String  ')'                 {$$ = TrUpdateNode (PARSEOP_INCLUDE, $3);
-                                        FlOpenIncludeFile ($3);}
-    ;
-
-IncludeEndTerm
-    : PARSEOP_INCLUDE_END           {$<n>$ = TrCreateLeafNode (PARSEOP_INCLUDE_END); TrSetCurrentFilename ($$);}
-    ;
-
-IncTerm
-    : PARSEOP_INCREMENT '('         {$<n>$ = TrCreateLeafNode (PARSEOP_INCREMENT);}
-        SuperName
-        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
-    | PARSEOP_INCREMENT '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-IndexFieldTerm
-    : PARSEOP_INDEXFIELD '('        {$<n>$ = TrCreateLeafNode (PARSEOP_INDEXFIELD);}
-        NameString
-        NameStringItem
-        ',' AccessTypeKeyword
-        ',' LockRuleKeyword
-        ',' UpdateRuleKeyword
-        ')' '{'
-            FieldUnitList '}'       {$$ = TrLinkChildren ($<n>3,6,$4,$5,$7,$9,$11,$14);}
-    | PARSEOP_INDEXFIELD '('
-        error ')' '{' error '}'     {$$ = AslDoError(); yyclearin;}
-    ;
-
-IndexTerm
-    : PARSEOP_INDEX '('             {$<n>$ = TrCreateLeafNode (PARSEOP_INDEX);}
-        TermArg
-        TermArgItem
-        Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
-    | PARSEOP_INDEX '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-LAndTerm
-    : PARSEOP_LAND '('              {$<n>$ = TrCreateLeafNode (PARSEOP_LAND);}
-        TermArg
-        TermArgItem
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
-    | PARSEOP_LAND '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-LEqualTerm
-    : PARSEOP_LEQUAL '('            {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
-        TermArg
-        TermArgItem
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
-    | PARSEOP_LEQUAL '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-LGreaterEqualTerm
-    : PARSEOP_LGREATEREQUAL '('     {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
-        TermArg
-        TermArgItem
-        ')'                         {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
-    | PARSEOP_LGREATEREQUAL '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-LGreaterTerm
-    : PARSEOP_LGREATER '('          {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
-        TermArg
-        TermArgItem
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
-    | PARSEOP_LGREATER '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-LLessEqualTerm
-    : PARSEOP_LLESSEQUAL '('        {$<n>$ = TrCreateLeafNode (PARSEOP_LGREATER);}
-        TermArg
-        TermArgItem
-        ')'                         {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
-    | PARSEOP_LLESSEQUAL '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-LLessTerm
-    : PARSEOP_LLESS '('             {$<n>$ = TrCreateLeafNode (PARSEOP_LLESS);}
-        TermArg
-        TermArgItem
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
-    | PARSEOP_LLESS '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-LNotEqualTerm
-    : PARSEOP_LNOTEQUAL '('         {$<n>$ = TrCreateLeafNode (PARSEOP_LEQUAL);}
-        TermArg
-        TermArgItem
-        ')'                         {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($<n>3,2,$4,$5));}
-    | PARSEOP_LNOTEQUAL '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-LNotTerm
-    : PARSEOP_LNOT '('              {$<n>$ = TrCreateLeafNode (PARSEOP_LNOT);}
-        TermArg
-        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
-    | PARSEOP_LNOT '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-LoadTableTerm
-    : PARSEOP_LOADTABLE '('         {$<n>$ = TrCreateLeafNode (PARSEOP_LOADTABLE);}
-        TermArg
-        TermArgItem
-        TermArgItem
-        OptionalListString
-        OptionalListString
-        OptionalReference
-        ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$5,$6,$7,$8,$9);}
-    | PARSEOP_LOADTABLE '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-LoadTerm
-    : PARSEOP_LOAD '('              {$<n>$ = TrCreateLeafNode (PARSEOP_LOAD);}
-        NameString
-        RequiredTarget
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
-    | PARSEOP_LOAD '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-LocalTerm
-    : PARSEOP_LOCAL0                {$$ = TrCreateLeafNode (PARSEOP_LOCAL0);}
-    | PARSEOP_LOCAL1                {$$ = TrCreateLeafNode (PARSEOP_LOCAL1);}
-    | PARSEOP_LOCAL2                {$$ = TrCreateLeafNode (PARSEOP_LOCAL2);}
-    | PARSEOP_LOCAL3                {$$ = TrCreateLeafNode (PARSEOP_LOCAL3);}
-    | PARSEOP_LOCAL4                {$$ = TrCreateLeafNode (PARSEOP_LOCAL4);}
-    | PARSEOP_LOCAL5                {$$ = TrCreateLeafNode (PARSEOP_LOCAL5);}
-    | PARSEOP_LOCAL6                {$$ = TrCreateLeafNode (PARSEOP_LOCAL6);}
-    | PARSEOP_LOCAL7                {$$ = TrCreateLeafNode (PARSEOP_LOCAL7);}
-    ;
-
-LOrTerm
-    : PARSEOP_LOR '('               {$<n>$ = TrCreateLeafNode (PARSEOP_LOR);}
-        TermArg
-        TermArgItem
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
-    | PARSEOP_LOR '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-MatchTerm
-    : PARSEOP_MATCH '('             {$<n>$ = TrCreateLeafNode (PARSEOP_MATCH);}
-        TermArg
-        ',' MatchOpKeyword
-        TermArgItem
-        ',' MatchOpKeyword
-        TermArgItem
-        TermArgItem
-        ')'                         {$$ = TrLinkChildren ($<n>3,6,$4,$6,$7,$9,$10,$11);}
-    | PARSEOP_MATCH '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-MethodTerm
-    : PARSEOP_METHOD  '('           {$<n>$ = TrCreateLeafNode (PARSEOP_METHOD);}
-        NameString
-        OptionalByteConstExpr       {UtCheckIntegerRange ($5, 0, 7);}
-        OptionalSerializeRuleKeyword
-        OptionalByteConstExpr
-        OptionalParameterTypePackage
-        OptionalParameterTypesPackage
-        ')' '{'
-            TermList '}'            {$$ = TrLinkChildren ($<n>3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$7,$8,$9,$10,$13);}
-    | PARSEOP_METHOD '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-MidTerm
-    : PARSEOP_MID '('               {$<n>$ = TrCreateLeafNode (PARSEOP_MID);}
-        TermArg
-        TermArgItem
-        TermArgItem
-        Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,4,$4,$5,$6,$7);}
-    | PARSEOP_MID '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-ModTerm
-    : PARSEOP_MOD '('               {$<n>$ = TrCreateLeafNode (PARSEOP_MOD);}
-        TermArg
-        TermArgItem
-        Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
-    | PARSEOP_MOD '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-MultiplyTerm
-    : PARSEOP_MULTIPLY '('          {$<n>$ = TrCreateLeafNode (PARSEOP_MULTIPLY);}
-        TermArg
-        TermArgItem
-        Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
-    | PARSEOP_MULTIPLY '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-MutexTerm
-    : PARSEOP_MUTEX '('             {$<n>$ = TrCreateLeafNode (PARSEOP_MUTEX);}
-        NameString
-        ',' ByteConstExpr
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
-    | PARSEOP_MUTEX '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-NameTerm
-    : PARSEOP_NAME '('              {$<n>$ = TrCreateLeafNode (PARSEOP_NAME);}
-        NameString
-        ',' DataObject
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);}
-    | PARSEOP_NAME '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-NAndTerm
-    : PARSEOP_NAND '('              {$<n>$ = TrCreateLeafNode (PARSEOP_NAND);}
-        TermArg
-        TermArgItem
-        Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
-    | PARSEOP_NAND '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-NoOpTerm
-    : PARSEOP_NOOP                  {$$ = TrCreateNode (PARSEOP_NOOP, 0);}
-    ;
-
-NOrTerm
-    : PARSEOP_NOR '('               {$<n>$ = TrCreateLeafNode (PARSEOP_NOR);}
-        TermArg
-        TermArgItem
-        Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
-    | PARSEOP_NOR '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-NotifyTerm
-    : PARSEOP_NOTIFY '('            {$<n>$ = TrCreateLeafNode (PARSEOP_NOTIFY);}
-        SuperName
-        TermArgItem
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
-    | PARSEOP_NOTIFY '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-NotTerm
-    : PARSEOP_NOT '('               {$<n>$ = TrCreateLeafNode (PARSEOP_NOT);}
-        TermArg
-        Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
-    | PARSEOP_NOT '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-ObjectTypeTerm
-    : PARSEOP_OBJECTTYPE '('        {$<n>$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE);}
-        ObjectTypeName
-        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
-    | PARSEOP_OBJECTTYPE '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-OffsetTerm
-    : PARSEOP_OFFSET '('
-        AmlPackageLengthTerm
-        ')'                         {$$ = TrCreateNode (PARSEOP_OFFSET,1,$3);}
-    | PARSEOP_OFFSET '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-OpRegionTerm
-    : PARSEOP_OPERATIONREGION '('   {$<n>$ = TrCreateLeafNode (PARSEOP_OPERATIONREGION);}
-        NameString
-        ',' OpRegionSpaceIdTerm
-        TermArgItem
-        TermArgItem
-        ')'                         {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8);}
-    | PARSEOP_OPERATIONREGION '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-OpRegionSpaceIdTerm
-    : RegionSpaceKeyword            {}
-    | ByteConst                     {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);}
-    ;
-
-OrTerm
-    : PARSEOP_OR '('                {$<n>$ = TrCreateLeafNode (PARSEOP_OR);}
-        TermArg
-        TermArgItem
-        Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
-    | PARSEOP_OR '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-PackageTerm
-    : PARSEOP_PACKAGE '('           {$<n>$ = TrCreateLeafNode (PARSEOP_VAR_PACKAGE);}
-        VarPackageLengthTerm
-        ')' '{'
-            PackageList '}'         {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
-    | PARSEOP_PACKAGE '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-PowerResTerm
-    : PARSEOP_POWERRESOURCE '('     {$<n>$ = TrCreateLeafNode (PARSEOP_POWERRESOURCE);}
-        NameString
-        ',' ByteConstExpr
-        ',' WordConstExpr
-        ')' '{'
-            TermList '}'            {$$ = TrLinkChildren ($<n>3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$8,$11);}
-    | PARSEOP_POWERRESOURCE '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-PrintfTerm
-    : PARSEOP_PRINTF '('            {$<n>$ = TrCreateLeafNode (PARSEOP_PRINTF);}
-        StringData
-        PrintfArgList
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
-    | PARSEOP_PRINTF '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-PrintfArgList
-    :                               {$$ = NULL;}
-    | TermArg                       {$$ = $1;}
-    | PrintfArgList ','
-       TermArg                      {$$ = TrLinkPeerNode ($1, $3);}
-    ;
-
-ProcessorTerm
-    : PARSEOP_PROCESSOR '('         {$<n>$ = TrCreateLeafNode (PARSEOP_PROCESSOR);}
-        NameString
-        ',' ByteConstExpr
-        OptionalDWordConstExpr
-        OptionalByteConstExpr
-        ')' '{'
-            TermList '}'            {$$ = TrLinkChildren ($<n>3,5,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8,$11);}
-    | PARSEOP_PROCESSOR '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-RawDataBufferTerm
-    : PARSEOP_DATABUFFER  '('       {$<n>$ = TrCreateLeafNode (PARSEOP_DATABUFFER);}
-        OptionalWordConst
-        ')' '{'
-            ByteList '}'            {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
-    | PARSEOP_DATABUFFER '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-/*
- * In RefOf, the node isn't really a target, but we can't keep track of it after
- * we've taken a pointer to it. (hard to tell if a local becomes initialized this way.)
- */
-RefOfTerm
-    : PARSEOP_REFOF '('             {$<n>$ = TrCreateLeafNode (PARSEOP_REFOF);}
-        SuperName
-        ')'                         {$$ = TrLinkChildren ($<n>3,1,TrSetNodeFlags ($4, NODE_IS_TARGET));}
-    | PARSEOP_REFOF '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-ReleaseTerm
-    : PARSEOP_RELEASE '('           {$<n>$ = TrCreateLeafNode (PARSEOP_RELEASE);}
-        SuperName
-        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
-    | PARSEOP_RELEASE '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-ResetTerm
-    : PARSEOP_RESET '('             {$<n>$ = TrCreateLeafNode (PARSEOP_RESET);}
-        SuperName
-        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
-    | PARSEOP_RESET '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-ReturnTerm
-    : PARSEOP_RETURN '('            {$<n>$ = TrCreateLeafNode (PARSEOP_RETURN);}
-        OptionalReturnArg
-        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
-    | PARSEOP_RETURN                {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_RETURN),1,TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN));}
-    | PARSEOP_RETURN '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-ScopeTerm
-    : PARSEOP_SCOPE '('             {$<n>$ = TrCreateLeafNode (PARSEOP_SCOPE);}
-        NameString
-        ')' '{'
-            TermList '}'            {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
-    | PARSEOP_SCOPE '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-ShiftLeftTerm
-    : PARSEOP_SHIFTLEFT '('         {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTLEFT);}
-        TermArg
-        TermArgItem
-        Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
-    | PARSEOP_SHIFTLEFT '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-ShiftRightTerm
-    : PARSEOP_SHIFTRIGHT '('        {$<n>$ = TrCreateLeafNode (PARSEOP_SHIFTRIGHT);}
-        TermArg
-        TermArgItem
-        Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
-    | PARSEOP_SHIFTRIGHT '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-SignalTerm
-    : PARSEOP_SIGNAL '('            {$<n>$ = TrCreateLeafNode (PARSEOP_SIGNAL);}
-        SuperName
-        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
-    | PARSEOP_SIGNAL '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-SizeOfTerm
-    : PARSEOP_SIZEOF '('            {$<n>$ = TrCreateLeafNode (PARSEOP_SIZEOF);}
-        SuperName
-        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
-    | PARSEOP_SIZEOF '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-SleepTerm
-    : PARSEOP_SLEEP '('             {$<n>$ = TrCreateLeafNode (PARSEOP_SLEEP);}
-        TermArg
-        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
-    | PARSEOP_SLEEP '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-StallTerm
-    : PARSEOP_STALL '('             {$<n>$ = TrCreateLeafNode (PARSEOP_STALL);}
-        TermArg
-        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
-    | PARSEOP_STALL '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-StoreTerm
-    : PARSEOP_STORE '('             {$<n>$ = TrCreateLeafNode (PARSEOP_STORE);}
-        TermArg
-        ',' SuperName
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));}
-    | PARSEOP_STORE '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-SubtractTerm
-    : PARSEOP_SUBTRACT '('          {$<n>$ = TrCreateLeafNode (PARSEOP_SUBTRACT);}
-        TermArg
-        TermArgItem
-        Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
-    | PARSEOP_SUBTRACT '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-SwitchTerm
-    : PARSEOP_SWITCH '('            {$<n>$ = TrCreateLeafNode (PARSEOP_SWITCH);}
-        TermArg
-        ')' '{'
-            CaseDefaultTermList '}'
-                                    {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
-    | PARSEOP_SWITCH '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-ThermalZoneTerm
-    : PARSEOP_THERMALZONE '('       {$<n>$ = TrCreateLeafNode (PARSEOP_THERMALZONE);}
-        NameString
-        ')' '{'
-            TermList '}'            {$$ = TrLinkChildren ($<n>3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);}
-    | PARSEOP_THERMALZONE '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-TimerTerm
-    : PARSEOP_TIMER '('             {$<n>$ = TrCreateLeafNode (PARSEOP_TIMER);}
-        ')'                         {$$ = TrLinkChildren ($<n>3,0);}
-    | PARSEOP_TIMER                 {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_TIMER),0);}
-    | PARSEOP_TIMER '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-ToBCDTerm
-    : PARSEOP_TOBCD '('             {$<n>$ = TrCreateLeafNode (PARSEOP_TOBCD);}
-        TermArg
-        Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
-    | PARSEOP_TOBCD '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-ToBufferTerm
-    : PARSEOP_TOBUFFER '('          {$<n>$ = TrCreateLeafNode (PARSEOP_TOBUFFER);}
-        TermArg
-        Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
-    | PARSEOP_TOBUFFER '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-ToDecimalStringTerm
-    : PARSEOP_TODECIMALSTRING '('   {$<n>$ = TrCreateLeafNode (PARSEOP_TODECIMALSTRING);}
-        TermArg
-        Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
-    | PARSEOP_TODECIMALSTRING '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-ToHexStringTerm
-    : PARSEOP_TOHEXSTRING '('       {$<n>$ = TrCreateLeafNode (PARSEOP_TOHEXSTRING);}
-        TermArg
-        Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
-    | PARSEOP_TOHEXSTRING '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-ToIntegerTerm
-    : PARSEOP_TOINTEGER '('         {$<n>$ = TrCreateLeafNode (PARSEOP_TOINTEGER);}
-        TermArg
-        Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
-    | PARSEOP_TOINTEGER '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-ToPLDTerm
-    : PARSEOP_TOPLD '('             {$<n>$ = TrCreateLeafNode (PARSEOP_TOPLD);}
-        PldKeywordList
-        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
-    | PARSEOP_TOPLD '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-PldKeywordList
-    :                               {$$ = NULL;}
-    | PldKeyword
-        PARSEOP_EXP_EQUALS Integer  {$$ = TrLinkChildren ($1,1,$3);}
-    | PldKeyword
-        PARSEOP_EXP_EQUALS String   {$$ = TrLinkChildren ($1,1,$3);}
-    | PldKeywordList ','            /* Allows a trailing comma at list end */
-    | PldKeywordList ','
-        PldKeyword
-        PARSEOP_EXP_EQUALS Integer  {$$ = TrLinkPeerNode ($1,TrLinkChildren ($3,1,$5));}
-    | PldKeywordList ','
-        PldKeyword
-        PARSEOP_EXP_EQUALS String   {$$ = TrLinkPeerNode ($1,TrLinkChildren ($3,1,$5));}
-    ;
-
-
-ToStringTerm
-    : PARSEOP_TOSTRING '('          {$<n>$ = TrCreateLeafNode (PARSEOP_TOSTRING);}
-        TermArg
-        OptionalCount
-        Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
-    | PARSEOP_TOSTRING '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-ToUUIDTerm
-    : PARSEOP_TOUUID '('
-        StringData ')'              {$$ = TrUpdateNode (PARSEOP_TOUUID, $3);}
-    | PARSEOP_TOUUID '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-UnicodeTerm
-    : PARSEOP_UNICODE '('           {$<n>$ = TrCreateLeafNode (PARSEOP_UNICODE);}
-        StringData
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,0,$4);}
-    | PARSEOP_UNICODE '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-UnloadTerm
-    : PARSEOP_UNLOAD '('            {$<n>$ = TrCreateLeafNode (PARSEOP_UNLOAD);}
-        SuperName
-        ')'                         {$$ = TrLinkChildren ($<n>3,1,$4);}
-    | PARSEOP_UNLOAD '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-WaitTerm
-    : PARSEOP_WAIT '('              {$<n>$ = TrCreateLeafNode (PARSEOP_WAIT);}
-        SuperName
-        TermArgItem
-        ')'                         {$$ = TrLinkChildren ($<n>3,2,$4,$5);}
-    | PARSEOP_WAIT '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-XOrTerm
-    : PARSEOP_XOR '('               {$<n>$ = TrCreateLeafNode (PARSEOP_XOR);}
-        TermArg
-        TermArgItem
-        Target
-        ')'                         {$$ = TrLinkChildren ($<n>3,3,$4,$5,$6);}
-    | PARSEOP_XOR '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-WhileTerm
-    : PARSEOP_WHILE '('             {$<n>$ = TrCreateLeafNode (PARSEOP_WHILE);}
-        TermArg
-        ')' '{' TermList '}'
-                                    {$$ = TrLinkChildren ($<n>3,2,$4,$7);}
-    | PARSEOP_WHILE '('
-        error ')'                   {$$ = AslDoError(); yyclearin;}
-    ;
-
-
-/*******************************************************************************
- *
  * ASL Helper Terms
  *
  ******************************************************************************/
 
 AmlPackageLengthTerm
-    : Integer                       {$$ = TrUpdateNode (PARSEOP_PACKAGE_LENGTH,(ACPI_PARSE_OBJECT *) $1);}
+    : Integer                       {$$ = TrUpdateNode (PARSEOP_PACKAGE_LENGTH,
+                                        (ACPI_PARSE_OBJECT *) $1);}
     ;
 
 NameStringItem
@@ -1720,7 +706,8 @@
     ;
 
 OptionalReturnArg
-    :                               {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN);}       /* Placeholder is a ZeroOp object */
+    :                               {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO),
+                                            NODE_IS_NULL_RETURN);}       /* Placeholder is a ZeroOp object */
     | TermArg                       {$$ = $1;}
     ;
 
@@ -1735,11 +722,6 @@
     | TermArg                       {$$ = $1;}
     ;
 
-OptionalBufferLength
-    :                               {$$ = NULL;}
-    | TermArg                       {$$ = $1;}
-    ;
-
 OptionalWordConst
     :                               {$$ = NULL;}
     | WordConst                     {$$ = $1;}
--- a/sys/external/bsd/acpica/dist/compiler/aslstubs.c	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/aslstubs.c	Fri Nov 11 19:14:16 2016 +0000
@@ -47,6 +47,7 @@
 #include "acevents.h"
 #include "acinterp.h"
 #include "acnamesp.h"
+#include "acparser.h"
 
 #define _COMPONENT          ACPI_COMPILER
         ACPI_MODULE_NAME    ("aslstubs")
@@ -71,6 +72,13 @@
 }
 
 ACPI_STATUS
+AcpiPsExecuteTable (
+    ACPI_EVALUATE_INFO      *Info)
+{
+    return (AE_OK);
+}
+
+ACPI_STATUS
 AcpiHwReadPort (
     ACPI_IO_ADDRESS         Address,
     UINT32                  *Value,
@@ -156,6 +164,13 @@
     return (AE_OK);
 }
 
+void
+AcpiEvUpdateGpes (
+    ACPI_OWNER_ID           TableOwnerId)
+{
+    return;
+}
+
 ACPI_STATUS
 AcpiEvAcquireGlobalLock (
     UINT16                  Timeout)
--- a/sys/external/bsd/acpica/dist/compiler/asltokens.y	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/asltokens.y	Fri Nov 11 19:14:16 2016 +0000
@@ -53,6 +53,16 @@
  *
  *****************************************************************************/
 
+/*
+ * Most tokens are defined to return <i>, which is a UINT64.
+ *
+ * These tokens return <s>, a pointer to the associated lexed string:
+ *
+ *  PARSEOP_NAMESEG
+ *  PARSEOP_NAMESTRING
+ *  PARSEOP_STRING_LITERAL
+ *  PARSEOP_STRUCTURE_NAMESTRING
+ */
 %token <i> PARSEOP_ACCESSAS
 %token <i> PARSEOP_ACCESSATTRIB_BLOCK
 %token <i> PARSEOP_ACCESSATTRIB_BLOCK_CALL
@@ -466,12 +476,42 @@
 %token <i> PARSEOP_FPRINTF
 %token <i> PARSEOP_FOR
 
+/* Structures */
+
+%token <i> PARSEOP_STRUCTURE
+%token <s> PARSEOP_STRUCTURE_NAMESTRING
+%token <i> PARSEOP_STRUCTURE_TAG
+%token <i> PARSEOP_STRUCTURE_ELEMENT
+%token <i> PARSEOP_STRUCTURE_INSTANCE
+%token <i> PARSEOP_STRUCTURE_REFERENCE
+%token <i> PARSEOP_STRUCTURE_POINTER
+
+/* Top level */
+
+%token <i> PARSEOP_ASL_CODE
+
+
+/*******************************************************************************
+ *
+ * Tokens below are not in the aslmap.c file
+ *
+ ******************************************************************************/
+
+
+/* Tokens below this are not in the aslmap.c file */
+
 /* Specific parentheses tokens are not used at this time */
            /* PARSEOP_EXP_PAREN_OPEN */
            /* PARSEOP_EXP_PAREN_CLOSE */
 
+/* ASL+ variable creation */
 
-%token <i> PARSEOP_ASL_CODE
+%token <i> PARSEOP_INTEGER_TYPE
+%token <i> PARSEOP_STRING_TYPE
+%token <i> PARSEOP_BUFFER_TYPE
+%token <i> PARSEOP_PACKAGE_TYPE
+%token <i> PARSEOP_REFERENCE_TYPE
+
 
 /*
  * Special functions. These should probably stay at the end of this
--- a/sys/external/bsd/acpica/dist/compiler/asltypes.y	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/asltypes.y	Fri Nov 11 19:14:16 2016 +0000
@@ -278,7 +278,6 @@
 %type <n> PackageElement
 %type <n> PackageList
 %type <n> PackageTerm
-%type <n> VarPackageLengthTerm
 
 /* Macros */
 
@@ -350,9 +349,9 @@
 %type <n> OptionalAddressRange
 %type <n> OptionalBitsPerByte
 %type <n> OptionalBuffer_Last
-%type <n> OptionalBufferLength
 %type <n> OptionalByteConstExpr
 %type <n> OptionalCount
+%type <n> OptionalDataCount
 %type <n> OptionalDecodeType
 %type <n> OptionalDevicePolarity
 %type <n> OptionalDWordConstExpr
@@ -369,6 +368,7 @@
 %type <n> OptionalObjectTypeKeyword
 %type <n> OptionalParameterTypePackage
 %type <n> OptionalParameterTypesPackage
+%type <n> OptionalParentheses
 %type <n> OptionalParityType
 %type <n> OptionalPredicate
 %type <n> OptionalQWordConstExpr
@@ -393,8 +393,53 @@
 %type <n> OptionalXferSize
 
 /*
- * C-style expression parser
+ * ASL+ (C-style) parser
  */
+
+/* Expressions and symbolic operators */
+
 %type <n> Expression
 %type <n> EqualsTerm
 %type <n> IndexExpTerm
+
+/* ASL+ Named object declaration support */
+/*
+%type <n> NameTermAslPlus
+
+%type <n> BufferBegin
+%type <n> BufferEnd
+%type <n> PackageBegin
+%type <n> PackageEnd
+%type <n> OptionalLength
+*/
+/* ASL+ Structure declarations */
+/*
+%type <n> StructureTerm
+%type <n> StructureTermBegin
+%type <n> StructureType
+%type <n> StructureTag
+%type <n> StructureElementList
+%type <n> StructureElement
+%type <n> StructureElementType
+%type <n> OptionalStructureElementType
+%type <n> StructureId
+*/
+/* Structure instantiantion */
+/*
+%type <n> StructureInstanceTerm
+%type <n> StructureTagReference
+%type <n> StructureInstanceEnd
+*/
+/* Pseudo-instantiantion for method Args/Locals */
+/*
+%type <n> MethodStructureTerm
+%type <n> LocalStructureName
+*/
+/* Direct structure references via the Index operator */
+/*
+%type <n> StructureReference
+%type <n> StructureIndexTerm
+%type <n> StructurePointerTerm
+%type <n> StructurePointerReference
+%type <n> OptionalDefinePointer
+*/
--- a/sys/external/bsd/acpica/dist/compiler/dtcompiler.h	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/dtcompiler.h	Fri Nov 11 19:14:16 2016 +0000
@@ -373,11 +373,6 @@
     DT_FIELD                *FieldObject,
     char                    *ExtraMessage);
 
-ACPI_STATUS
-DtStrtoul64 (
-    char                    *String,
-    UINT64                  *ReturnInteger);
-
 char*
 DtGetFieldValue (
     DT_FIELD                *Field);
@@ -609,6 +604,7 @@
 extern const unsigned char  TemplateNfit[];
 extern const unsigned char  TemplatePcct[];
 extern const unsigned char  TemplatePmtt[];
+extern const unsigned char  TemplateRasf[];
 extern const unsigned char  TemplateRsdt[];
 extern const unsigned char  TemplateS3pt[];
 extern const unsigned char  TemplateSbst[];
--- a/sys/external/bsd/acpica/dist/compiler/dttemplate.h	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/dttemplate.h	Fri Nov 11 19:14:16 2016 +0000
@@ -906,6 +906,16 @@
     0x00,0x00,0x00,0x00                       /* 000000B0    "...."     */
 };
 
+const unsigned char TemplateRasf[] =
+{
+    0x52,0x41,0x53,0x46,0x30,0x00,0x00,0x00,  /* 00000000    "RASF0..." */
+    0x01,0x31,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    ".1INTEL " */
+    0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65,  /* 00000010    "Template" */
+    0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
+    0x27,0x05,0x16,0x20,0x00,0x00,0x00,0x00,  /* 00000020    "'.. ...." */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00   /* 00000028    "........" */
+};
+
 const unsigned char TemplateRsdp[] =
 {
     0x52,0x53,0x44,0x20,0x50,0x54,0x52,0x20,  /* 00000000    "RSD PTR " */
--- a/sys/external/bsd/acpica/dist/debugger/dbconvert.c	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/debugger/dbconvert.c	Fri Nov 11 19:14:16 2016 +0000
@@ -321,7 +321,8 @@
     default:
 
         Object->Type = ACPI_TYPE_INTEGER;
-        Status = AcpiUtStrtoul64 (String, 16, AcpiGbl_IntegerByteWidth,
+        Status = AcpiUtStrtoul64 (String,
+            (AcpiGbl_IntegerByteWidth | ACPI_STRTOUL_BASE16),
             &Object->Integer.Value);
         break;
     }
--- a/sys/external/bsd/acpica/dist/debugger/dbfileio.c	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/debugger/dbfileio.c	Fri Nov 11 19:14:16 2016 +0000
@@ -46,15 +46,15 @@
 #include "accommon.h"
 #include "acdebug.h"
 #include "actables.h"
-#include <stdio.h>
-#ifdef ACPI_APPLICATION
-#include "acapps.h"
-#endif
 
 #define _COMPONENT          ACPI_CA_DEBUGGER
         ACPI_MODULE_NAME    ("dbfileio")
 
 
+#ifdef ACPI_APPLICATION
+#include "acapps.h"
+
+
 #ifdef ACPI_DEBUGGER
 /*******************************************************************************
  *
@@ -73,8 +73,6 @@
     void)
 {
 
-#ifdef ACPI_APPLICATION
-
     if (AcpiGbl_DebugFile)
     {
        fclose (AcpiGbl_DebugFile);
@@ -83,7 +81,6 @@
        AcpiOsPrintf ("Debug output file %s closed\n",
             AcpiGbl_DbDebugFilename);
     }
-#endif
 }
 
 
@@ -104,8 +101,6 @@
     char                    *Name)
 {
 
-#ifdef ACPI_APPLICATION
-
     AcpiDbCloseDebugFile ();
     AcpiGbl_DebugFile = fopen (Name, "w+");
     if (!AcpiGbl_DebugFile)
@@ -118,8 +113,6 @@
     strncpy (AcpiGbl_DbDebugFilename, Name,
         sizeof (AcpiGbl_DbDebugFilename));
     AcpiGbl_DbOutputToFile = TRUE;
-
-#endif
 }
 #endif
 
@@ -169,8 +162,7 @@
             return (Status);
         }
 
-        fprintf (stderr,
-            "Acpi table [%4.4s] successfully installed and loaded\n",
+        AcpiOsPrintf ("Acpi table [%4.4s] successfully installed and loaded\n",
             Table->Signature);
 
         TableListHead = TableListHead->Next;
@@ -178,3 +170,4 @@
 
     return (AE_OK);
 }
+#endif
--- a/sys/external/bsd/acpica/dist/disassembler/dmopcode.c	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/disassembler/dmopcode.c	Fri Nov 11 19:14:16 2016 +0000
@@ -64,6 +64,10 @@
 AcpiDmConvertToElseIf (
     ACPI_PARSE_OBJECT       *Op);
 
+static void
+AcpiDmPromoteSubtree (
+    ACPI_PARSE_OBJECT       *StartOp);
+
 
 /*******************************************************************************
  *
@@ -1067,12 +1071,22 @@
      *    be the only blocks under the original Else.
      */
     IfOp = OriginalElseOp->Common.Value.Arg;
+
     if (!IfOp ||
         (IfOp->Common.AmlOpcode != AML_IF_OP) ||
         (IfOp->Asl.Next && (IfOp->Asl.Next->Common.AmlOpcode != AML_ELSE_OP)))
     {
-        /* Not an Else..If sequence, cannot convert to ElseIf */
+        /* Not a proper Else..If sequence, cannot convert to ElseIf */
+
+        AcpiOsPrintf ("%s", "Else");
+        return;
+    }
 
+    /* Cannot have anything following the If...Else block */
+
+    ElseOp = IfOp->Common.Next;
+    if (ElseOp && ElseOp->Common.Next)
+    {
         AcpiOsPrintf ("%s", "Else");
         return;
     }
@@ -1100,7 +1114,10 @@
         /* If an ELSE matches the IF, promote it also */
 
         ElseOp->Common.Parent = OriginalElseOp->Common.Parent;
-        ElseOp->Common.Next = OriginalElseOp->Common.Next;
+
+        /* Promote the entire block under the ElseIf (All Next OPs) */
+
+        AcpiDmPromoteSubtree (OriginalElseOp);
     }
     else
     {
@@ -1122,3 +1139,48 @@
 
     OriginalElseOp->Common.Next = IfOp;
 }
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    AcpiDmPromoteSubtree
+ *
+ * PARAMETERS:  StartOpOp           - Original parent of the entire subtree
+ *
+ * RETURN:      None
+ *
+ * DESCRIPTION: Promote an entire parse subtree up one level.
+ *
+ ******************************************************************************/
+
+static void
+AcpiDmPromoteSubtree (
+    ACPI_PARSE_OBJECT       *StartOp)
+{
+    ACPI_PARSE_OBJECT       *Op;
+    ACPI_PARSE_OBJECT       *ParentOp;
+
+
+    /* New parent for subtree elements */
+
+    ParentOp = StartOp->Common.Parent;
+
+    /* First child starts the subtree */
+
+    Op = StartOp->Common.Value.Arg;
+
+    /* Walk the top-level elements of the subtree */
+
+    while (Op)
+    {
+        Op->Common.Parent = ParentOp;
+        if (!Op->Common.Next)
+        {
+            /* Last Op in list, update its next field */
+
+            Op->Common.Next = StartOp->Common.Next;
+            break;
+        }
+        Op = Op->Common.Next;
+    }
+}
--- a/sys/external/bsd/acpica/dist/dispatcher/dsmethod.c	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/dispatcher/dsmethod.c	Fri Nov 11 19:14:16 2016 +0000
@@ -107,12 +107,15 @@
         "Method auto-serialization parse [%4.4s] %p\n",
         AcpiUtGetNodeName (Node), Node));
 
+    AcpiExEnterInterpreter ();
+
     /* Create/Init a root op for the method parse tree */
 
     Op = AcpiPsAllocOp (AML_METHOD_OP, ObjDesc->Method.AmlStart);
     if (!Op)
     {
-        return_ACPI_STATUS (AE_NO_MEMORY);
+        Status = AE_NO_MEMORY;
+        goto Unlock;
     }
 
     AcpiPsSetName (Op, Node->Name.Integer);
@@ -124,7 +127,8 @@
     if (!WalkState)
     {
         AcpiPsFreeOp (Op);
-        return_ACPI_STATUS (AE_NO_MEMORY);
+        Status = AE_NO_MEMORY;
+        goto Unlock;
     }
 
     Status = AcpiDsInitAmlWalk (WalkState, Op, Node,
@@ -143,6 +147,8 @@
     Status = AcpiPsParseAml (WalkState);
 
     AcpiPsDeleteParseTree (Op);
+Unlock:
+    AcpiExExitInterpreter ();
     return_ACPI_STATUS (Status);
 }
 
@@ -810,7 +816,9 @@
         {
             /* Delete any direct children of (created by) this method */
 
+            (void) AcpiExExitInterpreter ();
             AcpiNsDeleteNamespaceSubtree (WalkState->MethodNode);
+            (void) AcpiExEnterInterpreter ();
 
             /*
              * Delete any objects that were created by this method
@@ -821,7 +829,9 @@
              */
             if (MethodDesc->Method.InfoFlags & ACPI_METHOD_MODIFIED_NAMESPACE)
             {
+                (void) AcpiExExitInterpreter ();
                 AcpiNsDeleteNamespaceByOwner (MethodDesc->Method.OwnerId);
+                (void) AcpiExEnterInterpreter ();
                 MethodDesc->Method.InfoFlags &=
                     ~ACPI_METHOD_MODIFIED_NAMESPACE;
             }
--- a/sys/external/bsd/acpica/dist/dispatcher/dswexec.c	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/dispatcher/dswexec.c	Fri Nov 11 19:14:16 2016 +0000
@@ -144,7 +144,8 @@
      * Result of predicate evaluation must be an Integer
      * object. Implicitly convert the argument if necessary.
      */
-    Status = AcpiExConvertToInteger (ObjDesc, &LocalObjDesc, 16);
+    Status = AcpiExConvertToInteger (ObjDesc, &LocalObjDesc,
+        ACPI_STRTOUL_BASE16);
     if (ACPI_FAILURE (Status))
     {
         goto Cleanup;
--- a/sys/external/bsd/acpica/dist/dispatcher/dswload2.c	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/dispatcher/dswload2.c	Fri Nov 11 19:14:16 2016 +0000
@@ -624,16 +624,12 @@
                 {
                     return_ACPI_STATUS (Status);
                 }
-
-                AcpiExExitInterpreter ();
             }
 
+            AcpiExExitInterpreter ();
             Status = AcpiEvInitializeRegion (
                 AcpiNsGetAttachedObject (Node), FALSE);
-            if (WalkState->MethodNode)
-            {
-                AcpiExEnterInterpreter ();
-            }
+            AcpiExEnterInterpreter ();
 
             if (ACPI_FAILURE (Status))
             {
--- a/sys/external/bsd/acpica/dist/events/evgpe.c	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/events/evgpe.c	Fri Nov 11 19:14:16 2016 +0000
@@ -149,6 +149,70 @@
 
 /*******************************************************************************
  *
+ * FUNCTION:    AcpiEvMaskGpe
+ *
+ * PARAMETERS:  GpeEventInfo            - GPE to be blocked/unblocked
+ *              IsMasked                - Whether the GPE is masked or not
+ *
+ * RETURN:      Status
+ *
+ * DESCRIPTION: Unconditionally mask/unmask a GPE during runtime.
+ *
+ ******************************************************************************/
+
+ACPI_STATUS
+AcpiEvMaskGpe (
+    ACPI_GPE_EVENT_INFO     *GpeEventInfo,
+    BOOLEAN                 IsMasked)
+{
+    ACPI_GPE_REGISTER_INFO  *GpeRegisterInfo;
+    UINT32                  RegisterBit;
+
+
+    ACPI_FUNCTION_TRACE (EvMaskGpe);
+
+
+    GpeRegisterInfo = GpeEventInfo->RegisterInfo;
+    if (!GpeRegisterInfo)
+    {
+        return_ACPI_STATUS (AE_NOT_EXIST);
+    }
+
+    RegisterBit = AcpiHwGetGpeRegisterBit (GpeEventInfo);
+
+    /* Perform the action */
+
+    if (IsMasked)
+    {
+        if (RegisterBit & GpeRegisterInfo->MaskForRun)
+        {
+            return_ACPI_STATUS (AE_BAD_PARAMETER);
+        }
+
+        (void) AcpiHwLowSetGpe (GpeEventInfo, ACPI_GPE_DISABLE);
+        ACPI_SET_BIT (GpeRegisterInfo->MaskForRun, (UINT8) RegisterBit);
+    }
+    else
+    {
+        if (!(RegisterBit & GpeRegisterInfo->MaskForRun))
+        {
+            return_ACPI_STATUS (AE_BAD_PARAMETER);
+        }
+
+        ACPI_CLEAR_BIT (GpeRegisterInfo->MaskForRun, (UINT8) RegisterBit);
+        if (GpeEventInfo->RuntimeCount &&
+            !GpeEventInfo->DisableForDispatch)
+        {
+            (void) AcpiHwLowSetGpe (GpeEventInfo, ACPI_GPE_ENABLE);
+        }
+    }
+
+    return_ACPI_STATUS (AE_OK);
+}
+
+
+/*******************************************************************************
+ *
  * FUNCTION:    AcpiEvAddGpeReference
  *
  * PARAMETERS:  GpeEventInfo            - Add a reference to this GPE
@@ -715,6 +779,7 @@
      * in the EventInfo.
      */
     (void) AcpiHwLowSetGpe (GpeEventInfo, ACPI_GPE_CONDITIONAL_ENABLE);
+    GpeEventInfo->DisableForDispatch = FALSE;
     return (AE_OK);
 }
 
@@ -784,6 +849,8 @@
         }
     }
 
+    GpeEventInfo->DisableForDispatch = TRUE;
+
     /*
      * Dispatch the GPE to either an installed handler or the control
      * method associated with this GPE (_Lxx or _Exx). If a handler
--- a/sys/external/bsd/acpica/dist/events/evgpeinit.c	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/events/evgpeinit.c	Fri Nov 11 19:14:16 2016 +0000
@@ -336,7 +336,9 @@
     ACPI_NAMESPACE_NODE     *MethodNode = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, ObjHandle);
     ACPI_GPE_WALK_INFO      *WalkInfo = ACPI_CAST_PTR (ACPI_GPE_WALK_INFO, Context);
     ACPI_GPE_EVENT_INFO     *GpeEventInfo;
+    ACPI_STATUS             Status;
     UINT32                  GpeNumber;
+    UINT8                   TempGpeNumber;
     char                    Name[ACPI_NAME_SIZE + 1];
     UINT8                   Type;
 
@@ -395,8 +397,8 @@
 
     /* 4) The last two characters of the name are the hex GPE Number */
 
-    GpeNumber = strtoul (&Name[2], NULL, 16);
-    if (GpeNumber == ACPI_UINT32_MAX)
+    Status = AcpiUtAsciiToHexByte (&Name[2], &TempGpeNumber);
+    if (ACPI_FAILURE (Status))
     {
         /* Conversion failed; invalid method, just ignore it */
 
@@ -408,6 +410,7 @@
 
     /* Ensure that we have a valid GPE number for this GPE block */
 
+    GpeNumber = (UINT32) TempGpeNumber;
     GpeEventInfo = AcpiEvLowGetGpeInfo (GpeNumber, WalkInfo->GpeBlock);
     if (!GpeEventInfo)
     {
--- a/sys/external/bsd/acpica/dist/events/evxfgpe.c	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/events/evxfgpe.c	Fri Nov 11 19:14:16 2016 +0000
@@ -271,11 +271,13 @@
     case ACPI_GPE_ENABLE:
 
         Status = AcpiHwLowSetGpe (GpeEventInfo, ACPI_GPE_ENABLE);
+        GpeEventInfo->DisableForDispatch = FALSE;
         break;
 
     case ACPI_GPE_DISABLE:
 
         Status = AcpiHwLowSetGpe (GpeEventInfo, ACPI_GPE_DISABLE);
+        GpeEventInfo->DisableForDispatch = TRUE;
         break;
 
     default:
@@ -294,6 +296,56 @@
 
 /*******************************************************************************
  *
+ * FUNCTION:    AcpiMaskGpe
+ *
+ * PARAMETERS:  GpeDevice           - Parent GPE Device. NULL for GPE0/GPE1
+ *              GpeNumber           - GPE level within the GPE block
+ *              IsMasked            - Whether the GPE is masked or not
+ *
+ * RETURN:      Status
+ *
+ * DESCRIPTION: Unconditionally mask/unmask the an individual GPE, ex., to
+ *              prevent a GPE flooding.
+ *
+ ******************************************************************************/
+
+ACPI_STATUS
+AcpiMaskGpe (
+    ACPI_HANDLE             GpeDevice,
+    UINT32                  GpeNumber,
+    BOOLEAN                 IsMasked)
+{
+    ACPI_GPE_EVENT_INFO     *GpeEventInfo;
+    ACPI_STATUS             Status;
+    ACPI_CPU_FLAGS          Flags;
+
+
+    ACPI_FUNCTION_TRACE (AcpiMaskGpe);
+
+
+    Flags = AcpiOsAcquireLock (AcpiGbl_GpeLock);
+
+    /* Ensure that we have a valid GPE number */
+
+    GpeEventInfo = AcpiEvGetGpeEventInfo (GpeDevice, GpeNumber);
+    if (!GpeEventInfo)
+    {
+        Status = AE_BAD_PARAMETER;
+        goto UnlockAndExit;
+    }
+
+    Status = AcpiEvMaskGpe (GpeEventInfo, IsMasked);
+
+UnlockAndExit:
+    AcpiOsReleaseLock (AcpiGbl_GpeLock, Flags);
+    return_ACPI_STATUS (Status);
+}
+
+ACPI_EXPORT_SYMBOL (AcpiMaskGpe)
+
+
+/*******************************************************************************
+ *
  * FUNCTION:    AcpiMarkGpeForWake
  *
  * PARAMETERS:  GpeDevice           - Parent GPE Device. NULL for GPE0/GPE1
--- a/sys/external/bsd/acpica/dist/executer/exconcat.c	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/executer/exconcat.c	Fri Nov 11 19:14:16 2016 +0000
@@ -164,7 +164,8 @@
     {
     case ACPI_TYPE_INTEGER:
 
-        Status = AcpiExConvertToInteger (LocalOperand1, &TempOperand1, 16);
+        Status = AcpiExConvertToInteger (LocalOperand1, &TempOperand1,
+            ACPI_STRTOUL_BASE16);
         break;
 
     case ACPI_TYPE_BUFFER:
--- a/sys/external/bsd/acpica/dist/executer/exconvrt.c	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/executer/exconvrt.c	Fri Nov 11 19:14:16 2016 +0000
@@ -137,8 +137,8 @@
          * of ACPI 3.0) is that the ToInteger() operator allows both decimal
          * and hexadecimal strings (hex prefixed with "0x").
          */
-        Status = AcpiUtStrtoul64 ((char *) Pointer, Flags,
-            AcpiGbl_IntegerByteWidth, &Result);
+        Status = AcpiUtStrtoul64 (ACPI_CAST_PTR (char, Pointer),
+            (AcpiGbl_IntegerByteWidth | Flags), &Result);
         if (ACPI_FAILURE (Status))
         {
             return_ACPI_STATUS (Status);
@@ -684,7 +684,8 @@
              * These types require an Integer operand. We can convert
              * a Buffer or a String to an Integer if necessary.
              */
-            Status = AcpiExConvertToInteger (SourceDesc, ResultDesc, 16);
+            Status = AcpiExConvertToInteger (SourceDesc, ResultDesc,
+                ACPI_STRTOUL_BASE16);
             break;
 
         case ACPI_TYPE_STRING:
--- a/sys/external/bsd/acpica/dist/executer/exmisc.c	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/executer/exmisc.c	Fri Nov 11 19:14:16 2016 +0000
@@ -360,7 +360,8 @@
     {
     case ACPI_TYPE_INTEGER:
 
-        Status = AcpiExConvertToInteger (Operand1, &LocalOperand1, 16);
+        Status = AcpiExConvertToInteger (Operand1, &LocalOperand1,
+            ACPI_STRTOUL_BASE16);
         break;
 
     case ACPI_TYPE_STRING:
--- a/sys/external/bsd/acpica/dist/executer/exoparg1.c	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/executer/exoparg1.c	Fri Nov 11 19:14:16 2016 +0000
@@ -550,8 +550,9 @@
 
     case AML_TO_INTEGER_OP:         /* ToInteger (Data, Result) */
 
-        Status = AcpiExConvertToInteger (
-            Operand[0], &ReturnDesc, ACPI_ANY_BASE);
+        /* Perform "explicit" conversion */
+
+        Status = AcpiExConvertToInteger (Operand[0], &ReturnDesc, 0);
         if (ReturnDesc == Operand[0])
         {
             /* No conversion performed, add ref to handle return value */
@@ -936,7 +937,7 @@
                  * 2) Dereference the node to an actual object. Could be a
                  *    Field, so we need to resolve the node to a value.
                  */
-                Status = AcpiNsGetNode (WalkState->ScopeInfo->Scope.Node,
+                Status = AcpiNsGetNodeUnlocked (WalkState->ScopeInfo->Scope.Node,
                     Operand[0]->String.Pointer,
                     ACPI_NS_SEARCH_PARENT,
                     ACPI_CAST_INDIRECT_PTR (
--- a/sys/external/bsd/acpica/dist/executer/exresop.c	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/executer/exresop.c	Fri Nov 11 19:14:16 2016 +0000
@@ -428,11 +428,13 @@
         case ARGI_INTEGER:
 
             /*
-             * Need an operand of type ACPI_TYPE_INTEGER,
-             * But we can implicitly convert from a STRING or BUFFER
-             * Aka - "Implicit Source Operand Conversion"
+             * Need an operand of type ACPI_TYPE_INTEGER, but we can
+             * implicitly convert from a STRING or BUFFER.
+             *
+             * Known as "Implicit Source Operand Conversion"
              */
-            Status = AcpiExConvertToInteger (ObjDesc, StackPtr, 16);
+            Status = AcpiExConvertToInteger (ObjDesc, StackPtr,
+                ACPI_STRTOUL_BASE16);
             if (ACPI_FAILURE (Status))
             {
                 if (Status == AE_TYPE)
--- a/sys/external/bsd/acpica/dist/executer/extrace.c	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/executer/extrace.c	Fri Nov 11 19:14:16 2016 +0000
@@ -226,7 +226,6 @@
     ACPI_OPERAND_OBJECT     *ObjDesc,
     ACPI_WALK_STATE         *WalkState)
 {
-    ACPI_STATUS             Status;
     char                    *Pathname = NULL;
     BOOLEAN                 Enabled = FALSE;
 
@@ -239,12 +238,6 @@
         Pathname = AcpiNsGetNormalizedPathname (MethodNode, TRUE);
     }
 
-    Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE);
-    if (ACPI_FAILURE (Status))
-    {
-        goto Exit;
-    }
-
     Enabled = AcpiExInterpreterTraceEnabled (Pathname);
     if (Enabled && !AcpiGbl_TraceMethodObject)
     {
@@ -265,9 +258,6 @@
         }
     }
 
-    (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE);
-
-Exit:
     if (Enabled)
     {
         ACPI_TRACE_POINT (ACPI_TRACE_AML_METHOD, TRUE,
@@ -302,7 +292,6 @@
     ACPI_OPERAND_OBJECT     *ObjDesc,
     ACPI_WALK_STATE         *WalkState)
 {
-    ACPI_STATUS             Status;
     char                    *Pathname = NULL;
     BOOLEAN                 Enabled;
 
@@ -315,28 +304,14 @@
         Pathname = AcpiNsGetNormalizedPathname (MethodNode, TRUE);
     }
 
-    Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE);
-    if (ACPI_FAILURE (Status))
-    {
-        goto ExitPath;
-    }
-
     Enabled = AcpiExInterpreterTraceEnabled (NULL);
 
-    (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE);
-
     if (Enabled)
     {
         ACPI_TRACE_POINT (ACPI_TRACE_AML_METHOD, FALSE,
             ObjDesc ? ObjDesc->Method.AmlStart : NULL, Pathname);
     }
 
-    Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE);
-    if (ACPI_FAILURE (Status))
-    {
-        goto ExitPath;
-    }
-
     /* Check whether the tracer should be stopped */
 
     if (AcpiGbl_TraceMethodObject == ObjDesc)
@@ -353,9 +328,6 @@
         AcpiGbl_TraceMethodObject = NULL;
     }
 
-    (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE);
-
-ExitPath:
     if (Pathname)
     {
         ACPI_FREE (Pathname);
--- a/sys/external/bsd/acpica/dist/executer/exutils.c	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/executer/exutils.c	Fri Nov 11 19:14:16 2016 +0000
@@ -103,6 +103,11 @@
     {
         ACPI_ERROR ((AE_INFO, "Could not acquire AML Interpreter mutex"));
     }
+    Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE);
+    if (ACPI_FAILURE (Status))
+    {
+        ACPI_ERROR ((AE_INFO, "Could not acquire AML Namespace mutex"));
+    }
 
     return_VOID;
 }
@@ -141,6 +146,11 @@
     ACPI_FUNCTION_TRACE (ExExitInterpreter);
 
 
+    Status = AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE);
+    if (ACPI_FAILURE (Status))
+    {
+        ACPI_ERROR ((AE_INFO, "Could not release AML Namespace mutex"));
+    }
     Status = AcpiUtReleaseMutex (ACPI_MTX_INTERPRETER);
     if (ACPI_FAILURE (Status))
     {
--- a/sys/external/bsd/acpica/dist/generate/unix/acpibin/Makefile	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/generate/unix/acpibin/Makefile	Fri Nov 11 19:14:16 2016 +0000
@@ -43,11 +43,9 @@
 	$(OBJDIR)/utmath.o\
 	$(OBJDIR)/utmisc.o\
 	$(OBJDIR)/utmutex.o\
-	$(OBJDIR)/utprint.o\
 	$(OBJDIR)/utstate.o\
 	$(OBJDIR)/utstring.o\
 	$(OBJDIR)/utxferror.o\
-	$(OBJDIR)/oslibcfs.o\
 	$(OBJDIR)/osunixxf.o
 
 #
--- a/sys/external/bsd/acpica/dist/generate/unix/acpidump/Makefile	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/generate/unix/acpidump/Makefile	Fri Nov 11 19:14:16 2016 +0000
@@ -33,7 +33,6 @@
 	$(OBJDIR)/apmain.o\
 	$(OBJDIR)/cmfsize.o\
 	$(OBJDIR)/getopt.o\
-	$(OBJDIR)/oslibcfs.o\
 	$(OBJDIR)/osunixdir.o\
 	$(OBJDIR)/osunixmap.o\
 	$(OBJDIR)/osunixxf.o\
@@ -44,10 +43,11 @@
 	$(OBJDIR)/utdebug.o\
 	$(OBJDIR)/utexcep.o\
 	$(OBJDIR)/utglobal.o\
+	$(OBJDIR)/uthex.o\
 	$(OBJDIR)/utmath.o\
 	$(OBJDIR)/utnonansi.o\
-	$(OBJDIR)/utprint.o\
 	$(OBJDIR)/utstring.o\
+	$(OBJDIR)/utstrtoul64.o\
 	$(OBJDIR)/utxferror.o
 
 #
--- a/sys/external/bsd/acpica/dist/generate/unix/acpiexamples/Makefile	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/generate/unix/acpiexamples/Makefile	Fri Nov 11 19:14:16 2016 +0000
@@ -107,7 +107,6 @@
 	$(OBJDIR)/nsxfeval.o\
 	$(OBJDIR)/nsxfname.o\
 	$(OBJDIR)/nsxfobj.o\
-	$(OBJDIR)/oslibcfs.o\
 	$(OBJDIR)/osunixxf.o\
 	$(OBJDIR)/psargs.o\
 	$(OBJDIR)/psloop.o\
@@ -154,10 +153,10 @@
 	$(OBJDIR)/utownerid.o\
 	$(OBJDIR)/utnonansi.o\
 	$(OBJDIR)/utpredef.o\
-	$(OBJDIR)/utprint.o\
 	$(OBJDIR)/utresrc.o\
 	$(OBJDIR)/utstate.o\
 	$(OBJDIR)/utstring.o\
+	$(OBJDIR)/utstrtoul64.o\
 	$(OBJDIR)/utxface.o\
 	$(OBJDIR)/utxferror.o\
 	$(OBJDIR)/utxfinit.o
--- a/sys/external/bsd/acpica/dist/generate/unix/acpiexec/Makefile	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/generate/unix/acpiexec/Makefile	Fri Nov 11 19:14:16 2016 +0000
@@ -163,7 +163,6 @@
 	$(OBJDIR)/nsxfeval.o\
 	$(OBJDIR)/nsxfname.o\
 	$(OBJDIR)/nsxfobj.o\
-	$(OBJDIR)/oslibcfs.o\
 	$(OBJDIR)/osunixxf.o\
 	$(OBJDIR)/psargs.o\
 	$(OBJDIR)/psloop.o\
@@ -224,10 +223,10 @@
 	$(OBJDIR)/utownerid.o\
 	$(OBJDIR)/utnonansi.o\
 	$(OBJDIR)/utpredef.o\
-	$(OBJDIR)/utprint.o\
 	$(OBJDIR)/utresrc.o\
 	$(OBJDIR)/utstate.o\
 	$(OBJDIR)/utstring.o\
+	$(OBJDIR)/utstrtoul64.o\
 	$(OBJDIR)/uttrack.o\
 	$(OBJDIR)/utuuid.o\
 	$(OBJDIR)/utxface.o\
--- a/sys/external/bsd/acpica/dist/generate/unix/acpihelp/Makefile	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/generate/unix/acpihelp/Makefile	Fri Nov 11 19:14:16 2016 +0000
@@ -32,13 +32,13 @@
 	$(OBJDIR)/ahaslkey.o\
 	$(OBJDIR)/ahaslops.o\
 	$(OBJDIR)/ahdecode.o\
+	$(OBJDIR)/ahgrammar.o\
 	$(OBJDIR)/ahids.o\
 	$(OBJDIR)/ahpredef.o\
 	$(OBJDIR)/ahmain.o\
 	$(OBJDIR)/ahtable.o\
 	$(OBJDIR)/ahuuids.o\
 	$(OBJDIR)/getopt.o\
-	$(OBJDIR)/oslibcfs.o\
 	$(OBJDIR)/osunixxf.o\
 	$(OBJDIR)/utdebug.o\
 	$(OBJDIR)/utexcep.o\
@@ -47,7 +47,6 @@
 	$(OBJDIR)/utmath.o\
 	$(OBJDIR)/utnonansi.o\
 	$(OBJDIR)/utpredef.o\
-	$(OBJDIR)/utprint.o\
 	$(OBJDIR)/utuuid.o
 
 #
--- a/sys/external/bsd/acpica/dist/generate/unix/acpinames/Makefile	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/generate/unix/acpinames/Makefile	Fri Nov 11 19:14:16 2016 +0000
@@ -72,7 +72,6 @@
 	$(OBJDIR)/nsxfeval.o\
 	$(OBJDIR)/nsxfname.o\
 	$(OBJDIR)/nsxfobj.o\
-	$(OBJDIR)/oslibcfs.o\
 	$(OBJDIR)/osunixxf.o\
 	$(OBJDIR)/psargs.o\
 	$(OBJDIR)/psloop.o\
@@ -116,7 +115,6 @@
 	$(OBJDIR)/utobject.o\
 	$(OBJDIR)/utosi.o\
 	$(OBJDIR)/utownerid.o\
-	$(OBJDIR)/utprint.o\
 	$(OBJDIR)/utstate.o\
 	$(OBJDIR)/utstring.o\
 	$(OBJDIR)/utxface.o\
--- a/sys/external/bsd/acpica/dist/generate/unix/acpisrc/Makefile	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/generate/unix/acpisrc/Makefile	Fri Nov 11 19:14:16 2016 +0000
@@ -36,16 +36,15 @@
     $(OBJDIR)/asutils.o\
     $(OBJDIR)/cmfsize.o\
     $(OBJDIR)/getopt.o \
-    $(OBJDIR)/oslibcfs.o\
     $(OBJDIR)/osunixdir.o\
     $(OBJDIR)/osunixxf.o\
-	$(OBJDIR)/utascii.o\
+    $(OBJDIR)/utascii.o\
     $(OBJDIR)/utdebug.o\
     $(OBJDIR)/utexcep.o\
     $(OBJDIR)/utglobal.o\
+	$(OBJDIR)/uthex.o\
     $(OBJDIR)/utmath.o\
-	$(OBJDIR)/utnonansi.o\
-    $(OBJDIR)/utprint.o\
+    $(OBJDIR)/utnonansi.o\
     $(OBJDIR)/utstring.o\
     $(OBJDIR)/utxferror.o
 
--- a/sys/external/bsd/acpica/dist/generate/unix/acpixtract/Makefile	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/generate/unix/acpixtract/Makefile	Fri Nov 11 19:14:16 2016 +0000
@@ -31,15 +31,14 @@
     $(OBJDIR)/axmain.o\
     $(OBJDIR)/axutils.o\
     $(OBJDIR)/getopt.o\
-    $(OBJDIR)/oslibcfs.o\
     $(OBJDIR)/osunixxf.o\
     $(OBJDIR)/utascii.o\
     $(OBJDIR)/utdebug.o\
     $(OBJDIR)/utexcep.o\
     $(OBJDIR)/utglobal.o\
+	$(OBJDIR)/uthex.o\
     $(OBJDIR)/utmath.o\
     $(OBJDIR)/utnonansi.o\
-    $(OBJDIR)/utprint.o\
     $(OBJDIR)/utxferror.o
 
 #
--- a/sys/external/bsd/acpica/dist/generate/unix/iasl/Makefile	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/generate/unix/iasl/Makefile	Fri Nov 11 19:14:16 2016 +0000
@@ -62,6 +62,7 @@
 	$(OBJDIR)/aslfiles.o\
 	$(OBJDIR)/aslfileio.o\
 	$(OBJDIR)/aslfold.o\
+	$(OBJDIR)/aslhelp.o\
 	$(OBJDIR)/aslhex.o\
 	$(OBJDIR)/asllength.o\
 	$(OBJDIR)/asllisting.o\
@@ -177,7 +178,6 @@
 	$(OBJDIR)/nswalk.o\
 	$(OBJDIR)/nsxfobj.o\
 	$(OBJDIR)/osunixxf.o\
-	$(OBJDIR)/oslibcfs.o\
 	$(OBJDIR)/prexpress.o\
 	$(OBJDIR)/prmacros.o\
 	$(OBJDIR)/prscan.o\
@@ -221,9 +221,9 @@
 	$(OBJDIR)/utobject.o\
 	$(OBJDIR)/utownerid.o\
 	$(OBJDIR)/utpredef.o\
-	$(OBJDIR)/utprint.o\
 	$(OBJDIR)/utresrc.o\
 	$(OBJDIR)/utstate.o\
+	$(OBJDIR)/utstrtoul64.o\
 	$(OBJDIR)/utstring.o\
 	$(OBJDIR)/utuuid.o\
 	$(OBJDIR)/utxface.o\
@@ -245,12 +245,14 @@
 
 ASL_PARSER = \
 	$(ASL_COMPILER)/aslcstyle.y\
+	$(ASL_COMPILER)/aslhelpers.y\
 	$(ASL_COMPILER)/aslparser.y\
+	$(ASL_COMPILER)/aslprimaries.y\
 	$(ASL_COMPILER)/aslresources.y\
+	$(ASL_COMPILER)/aslrules.y\
 	$(ASL_COMPILER)/aslsupport.y\
 	$(ASL_COMPILER)/asltokens.y\
-	$(ASL_COMPILER)/asltypes.y\
-	$(ASL_COMPILER)/aslrules.y
+	$(ASL_COMPILER)/asltypes.y
 
 ASL_LEXER = \
 	$(ASL_COMPILER)/aslcompiler.l\
@@ -277,7 +279,7 @@
 safe_yacc = \
 	_d=`mktemp -d $(OBJDIR)/$(1).XXXXXX` &&\
 	cd $$_d &&\
-	$(YACC) $(YFLAGS) -d -p$(1) $(abspath $(2)) &&\
+	$(YACC) $(YFLAGS) -v -d -p$(1) $(abspath $(2)) &&\
 	cd - &&\
 	mv $$_d/y.tab$(suffix $(3)) $(3);\
 	_r=$$?;\
--- a/sys/external/bsd/acpica/dist/hardware/hwgpe.c	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/hardware/hwgpe.c	Fri Nov 11 19:14:16 2016 +0000
@@ -108,7 +108,7 @@
     UINT32                  Action)
 {
     ACPI_GPE_REGISTER_INFO  *GpeRegisterInfo;
-    ACPI_STATUS             Status;
+    ACPI_STATUS             Status = AE_OK;
     UINT32                  EnableMask;
     UINT32                  RegisterBit;
 
@@ -164,9 +164,12 @@
         return (AE_BAD_PARAMETER);
     }
 
-    /* Write the updated enable mask */
+    if (!(RegisterBit & GpeRegisterInfo->MaskForRun))
+    {
+        /* Write the updated enable mask */
 
-    Status = AcpiHwWrite (EnableMask, &GpeRegisterInfo->EnableAddress);
+        Status = AcpiHwWrite (EnableMask, &GpeRegisterInfo->EnableAddress);
+    }
     return (Status);
 }
 
@@ -269,6 +272,13 @@
         LocalEventStatus |= ACPI_EVENT_FLAG_ENABLED;
     }
 
+    /* GPE currently masked? (masked for runtime?) */
+
+    if (RegisterBit & GpeRegisterInfo->MaskForRun)
+    {
+        LocalEventStatus |= ACPI_EVENT_FLAG_MASKED;
+    }
+
     /* GPE enabled for wake? */
 
     if (RegisterBit & GpeRegisterInfo->EnableForWake)
@@ -440,6 +450,7 @@
     UINT32                  i;
     ACPI_STATUS             Status;
     ACPI_GPE_REGISTER_INFO  *GpeRegisterInfo;
+    UINT8                   EnableMask;
 
 
     /* NOTE: assumes that all GPEs are currently disabled */
@@ -456,8 +467,9 @@
 
         /* Enable all "runtime" GPEs in this register */
 
-        Status = AcpiHwGpeEnableWrite (GpeRegisterInfo->EnableForRun,
-            GpeRegisterInfo);
+        EnableMask = GpeRegisterInfo->EnableForRun &
+            ~GpeRegisterInfo->MaskForRun;
+        Status = AcpiHwGpeEnableWrite (EnableMask, GpeRegisterInfo);
         if (ACPI_FAILURE (Status))
         {
             return (Status);
--- a/sys/external/bsd/acpica/dist/include/acclib.h	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/include/acclib.h	Fri Nov 11 19:14:16 2016 +0000
@@ -73,6 +73,23 @@
 #define isprint(c)  (AcpiGbl_Ctypes[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP | _ACPI_DI | _ACPI_XS | _ACPI_PU))
 #define isalpha(c)  (AcpiGbl_Ctypes[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP))
 
+/* Error code */
+
+#define EPERM            1 /* Operation not permitted */
+#define ENOENT           2 /* No such file or directory */
+#define EINTR            4 /* Interrupted system call */
+#define EIO              5 /* I/O error */
+#define EBADF            9 /* Bad file number */
+#define EAGAIN          11 /* Try again */
+#define ENOMEM          12 /* Out of memory */
+#define EACCES          13 /* Permission denied */
+#define EFAULT          14 /* Bad address */
+#define EBUSY           16 /* Device or resource busy */
+#define EEXIST          17 /* File exists */
+#define ENODEV          19 /* No such device */
+#define EINVAL          22 /* Invalid argument */
+#define EPIPE           32 /* Broken pipe */
+#define ERANGE          34 /* Math result not representable */
 
 /* Strings */
 
@@ -164,4 +181,105 @@
 toupper (
     int                     c);
 
+/*
+ * utprint - printf/vprintf output functions
+ */
+const char *
+AcpiUtScanNumber (
+    const char              *String,
+    UINT64                  *NumberPtr);
+
+const char *
+AcpiUtPrintNumber (
+    char                    *String,
+    UINT64                  Number);
+
+int
+vsnprintf (
+    char                    *String,
+    ACPI_SIZE               Size,
+    const char              *Format,
+    va_list                 Args);
+
+int
+snprintf (
+    char                    *String,
+    ACPI_SIZE               Size,
+    const char              *Format,
+    ...);
+
+int
+sprintf (
+    char                    *String,
+    const char              *Format,
+    ...);
+
+#ifdef ACPI_APPLICATION
+#define SEEK_SET            0
+#define SEEK_CUR            1
+#define SEEK_END            2
+
+/*
+ * NOTE: Currently we only need to update errno for file IOs. Other
+ *       Clibrary invocations in ACPICA do not make descisions according to
+ *       the errno.
+ */
+extern int errno;
+
+int
+vprintf (
+    const char              *Format,
+    va_list                 Args);
+
+int
+printf (
+    const char              *Format,
+    ...);
+
+int
+vfprintf (
+    FILE                    *File,
+    const char              *Format,
+    va_list                 Args);
+
+int
+fprintf (
+    FILE                    *File,
+    const char              *Format,
+    ...);
+
+FILE *
+fopen (
+    const char              *Path,
+    const char              *Modes);
+
+void
+fclose (
+    FILE                    *File);
+
+int
+fread (
+    void                    *Buffer,
+    ACPI_SIZE               Size,
+    ACPI_SIZE               Count,
+    FILE                    *File);
+
+int
+fwrite (
+    void                    *Buffer,
+    ACPI_SIZE               Size,
+    ACPI_SIZE               Count,
+    FILE                    *File);
+
+int
+fseek (
+    FILE                    *File,
+    long                    Offset,
+    int                     From);
+
+long
+ftell (
+    FILE                    *File);
+#endif
+
 #endif /* _ACCLIB_H */
--- a/sys/external/bsd/acpica/dist/include/acconfig.h	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/include/acconfig.h	Fri Nov 11 19:14:16 2016 +0000
@@ -146,6 +146,10 @@
 
 #define ACPI_ADDRESS_RANGE_MAX          2
 
+/* Maximum number of While() loops before abort */
+
+#define ACPI_MAX_LOOP_COUNT             0x000FFFFF
+
 
 /******************************************************************************
  *
--- a/sys/external/bsd/acpica/dist/include/acevents.h	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/include/acevents.h	Fri Nov 11 19:14:16 2016 +0000
@@ -116,6 +116,11 @@
     ACPI_GPE_EVENT_INFO     *GpeEventInfo);
 
 ACPI_STATUS
+AcpiEvMaskGpe (
+    ACPI_GPE_EVENT_INFO     *GpeEventInfo,
+    BOOLEAN                 IsMasked);
+
+ACPI_STATUS
 AcpiEvAddGpeReference (
     ACPI_GPE_EVENT_INFO     *GpeEventInfo);
 
--- a/sys/external/bsd/acpica/dist/include/acparser.h	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/include/acparser.h	Fri Nov 11 19:14:16 2016 +0000
@@ -83,6 +83,10 @@
 AcpiPsExecuteMethod (
     ACPI_EVALUATE_INFO      *Info);
 
+ACPI_STATUS
+AcpiPsExecuteTable (
+    ACPI_EVALUATE_INFO      *Info);
+
 
 /*
  * psargs - Parse AML opcode arguments
--- a/sys/external/bsd/acpica/dist/include/actbl.h	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/include/actbl.h	Fri Nov 11 19:14:16 2016 +0000
@@ -256,62 +256,72 @@
 
 typedef struct acpi_table_fadt
 {
-    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
-    UINT32                  Facs;               /* 32-bit physical address of FACS */
-    UINT32                  Dsdt;               /* 32-bit physical address of DSDT */
-    UINT8                   Model;              /* System Interrupt Model (ACPI 1.0) - not used in ACPI 2.0+ */
-    UINT8                   PreferredProfile;   /* Conveys preferred power management profile to OSPM. */
-    UINT16                  SciInterrupt;       /* System vector of SCI interrupt */
-    UINT32                  SmiCommand;         /* 32-bit Port address of SMI command port */
-    UINT8                   AcpiEnable;         /* Value to write to SMI_CMD to enable ACPI */
-    UINT8                   AcpiDisable;        /* Value to write to SMI_CMD to disable ACPI */
-    UINT8                   S4BiosRequest;      /* Value to write to SMI_CMD to enter S4BIOS state */
-    UINT8                   PstateControl;      /* Processor performance state control*/
-    UINT32                  Pm1aEventBlock;     /* 32-bit port address of Power Mgt 1a Event Reg Blk */
-    UINT32                  Pm1bEventBlock;     /* 32-bit port address of Power Mgt 1b Event Reg Blk */
-    UINT32                  Pm1aControlBlock;   /* 32-bit port address of Power Mgt 1a Control Reg Blk */
-    UINT32                  Pm1bControlBlock;   /* 32-bit port address of Power Mgt 1b Control Reg Blk */
-    UINT32                  Pm2ControlBlock;    /* 32-bit port address of Power Mgt 2 Control Reg Blk */
-    UINT32                  PmTimerBlock;       /* 32-bit port address of Power Mgt Timer Ctrl Reg Blk */
-    UINT32                  Gpe0Block;          /* 32-bit port address of General Purpose Event 0 Reg Blk */
-    UINT32                  Gpe1Block;          /* 32-bit port address of General Purpose Event 1 Reg Blk */
-    UINT8                   Pm1EventLength;     /* Byte Length of ports at Pm1xEventBlock */
-    UINT8                   Pm1ControlLength;   /* Byte Length of ports at Pm1xControlBlock */
-    UINT8                   Pm2ControlLength;   /* Byte Length of ports at Pm2ControlBlock */
-    UINT8                   PmTimerLength;      /* Byte Length of ports at PmTimerBlock */
-    UINT8                   Gpe0BlockLength;    /* Byte Length of ports at Gpe0Block */
-    UINT8                   Gpe1BlockLength;    /* Byte Length of ports at Gpe1Block */
-    UINT8                   Gpe1Base;           /* Offset in GPE number space where GPE1 events start */
-    UINT8                   CstControl;         /* Support for the _CST object and C-States change notification */
-    UINT16                  C2Latency;          /* Worst case HW latency to enter/exit C2 state */
-    UINT16                  C3Latency;          /* Worst case HW latency to enter/exit C3 state */
-    UINT16                  FlushSize;          /* Processor memory cache line width, in bytes */
-    UINT16                  FlushStride;        /* Number of flush strides that need to be read */
-    UINT8                   DutyOffset;         /* Processor duty cycle index in processor P_CNT reg */
-    UINT8                   DutyWidth;          /* Processor duty cycle value bit width in P_CNT register */
-    UINT8                   DayAlarm;           /* Index to day-of-month alarm in RTC CMOS RAM */
-    UINT8                   MonthAlarm;         /* Index to month-of-year alarm in RTC CMOS RAM */
-    UINT8                   Century;            /* Index to century in RTC CMOS RAM */
-    UINT16                  BootFlags;          /* IA-PC Boot Architecture Flags (see below for individual flags) */
-    UINT8                   Reserved;           /* Reserved, must be zero */
-    UINT32                  Flags;              /* Miscellaneous flag bits (see below for individual flags) */
-    ACPI_GENERIC_ADDRESS    ResetRegister;      /* 64-bit address of the Reset register */
-    UINT8                   ResetValue;         /* Value to write to the ResetRegister port to reset the system */
-    UINT16                  ArmBootFlags;       /* ARM-Specific Boot Flags (see below for individual flags) (ACPI 5.1) */
-    UINT8                   MinorRevision;      /* FADT Minor Revision (ACPI 5.1) */
-    UINT64                  XFacs;              /* 64-bit physical address of FACS */
-    UINT64                  XDsdt;              /* 64-bit physical address of DSDT */
-    ACPI_GENERIC_ADDRESS    XPm1aEventBlock;    /* 64-bit Extended Power Mgt 1a Event Reg Blk address */
-    ACPI_GENERIC_ADDRESS    XPm1bEventBlock;    /* 64-bit Extended Power Mgt 1b Event Reg Blk address */
-    ACPI_GENERIC_ADDRESS    XPm1aControlBlock;  /* 64-bit Extended Power Mgt 1a Control Reg Blk address */
-    ACPI_GENERIC_ADDRESS    XPm1bControlBlock;  /* 64-bit Extended Power Mgt 1b Control Reg Blk address */
-    ACPI_GENERIC_ADDRESS    XPm2ControlBlock;   /* 64-bit Extended Power Mgt 2 Control Reg Blk address */
-    ACPI_GENERIC_ADDRESS    XPmTimerBlock;      /* 64-bit Extended Power Mgt Timer Ctrl Reg Blk address */
-    ACPI_GENERIC_ADDRESS    XGpe0Block;         /* 64-bit Extended General Purpose Event 0 Reg Blk address */
-    ACPI_GENERIC_ADDRESS    XGpe1Block;         /* 64-bit Extended General Purpose Event 1 Reg Blk address */
-    ACPI_GENERIC_ADDRESS    SleepControl;       /* 64-bit Sleep Control register (ACPI 5.0) */
-    ACPI_GENERIC_ADDRESS    SleepStatus;        /* 64-bit Sleep Status register (ACPI 5.0) */
-    UINT64                  HypervisorId;       /* Hypervisor Vendor ID (ACPI 6.0) */
+    ACPI_TABLE_HEADER       Header;             /* [V1] Common ACPI table header */
+    UINT32                  Facs;               /* [V1] 32-bit physical address of FACS */
+    UINT32                  Dsdt;               /* [V1] 32-bit physical address of DSDT */
+    UINT8                   Model;              /* [V1] System Interrupt Model (ACPI 1.0) - not used in ACPI 2.0+ */
+    UINT8                   PreferredProfile;   /* [V1] Conveys preferred power management profile to OSPM. */
+    UINT16                  SciInterrupt;       /* [V1] System vector of SCI interrupt */
+    UINT32                  SmiCommand;         /* [V1] 32-bit Port address of SMI command port */
+    UINT8                   AcpiEnable;         /* [V1] Value to write to SMI_CMD to enable ACPI */
+    UINT8                   AcpiDisable;        /* [V1] Value to write to SMI_CMD to disable ACPI */
+    UINT8                   S4BiosRequest;      /* [V1] Value to write to SMI_CMD to enter S4BIOS state */
+    UINT8                   PstateControl;      /* [V1] Processor performance state control*/
+    UINT32                  Pm1aEventBlock;     /* [V1] 32-bit port address of Power Mgt 1a Event Reg Blk */
+    UINT32                  Pm1bEventBlock;     /* [V1] 32-bit port address of Power Mgt 1b Event Reg Blk */
+    UINT32                  Pm1aControlBlock;   /* [V1] 32-bit port address of Power Mgt 1a Control Reg Blk */
+    UINT32                  Pm1bControlBlock;   /* [V1] 32-bit port address of Power Mgt 1b Control Reg Blk */
+    UINT32                  Pm2ControlBlock;    /* [V1] 32-bit port address of Power Mgt 2 Control Reg Blk */
+    UINT32                  PmTimerBlock;       /* [V1] 32-bit port address of Power Mgt Timer Ctrl Reg Blk */
+    UINT32                  Gpe0Block;          /* [V1] 32-bit port address of General Purpose Event 0 Reg Blk */
+    UINT32                  Gpe1Block;          /* [V1] 32-bit port address of General Purpose Event 1 Reg Blk */
+    UINT8                   Pm1EventLength;     /* [V1] Byte Length of ports at Pm1xEventBlock */
+    UINT8                   Pm1ControlLength;   /* [V1] Byte Length of ports at Pm1xControlBlock */
+    UINT8                   Pm2ControlLength;   /* [V1] Byte Length of ports at Pm2ControlBlock */
+    UINT8                   PmTimerLength;      /* [V1] Byte Length of ports at PmTimerBlock */
+    UINT8                   Gpe0BlockLength;    /* [V1] Byte Length of ports at Gpe0Block */
+    UINT8                   Gpe1BlockLength;    /* [V1] Byte Length of ports at Gpe1Block */
+    UINT8                   Gpe1Base;           /* [V1] Offset in GPE number space where GPE1 events start */
+    UINT8                   CstControl;         /* [V1] Support for the _CST object and C-States change notification */
+    UINT16                  C2Latency;          /* [V1] Worst case HW latency to enter/exit C2 state */
+    UINT16                  C3Latency;          /* [V1] Worst case HW latency to enter/exit C3 state */
+    UINT16                  FlushSize;          /* [V1] Processor memory cache line width, in bytes */
+    UINT16                  FlushStride;        /* [V1] Number of flush strides that need to be read */
+    UINT8                   DutyOffset;         /* [V1] Processor duty cycle index in processor P_CNT reg */
+    UINT8                   DutyWidth;          /* [V1] Processor duty cycle value bit width in P_CNT register */
+    UINT8                   DayAlarm;           /* [V1] Index to day-of-month alarm in RTC CMOS RAM */
+    UINT8                   MonthAlarm;         /* [V1] Index to month-of-year alarm in RTC CMOS RAM */
+    UINT8                   Century;            /* [V1] Index to century in RTC CMOS RAM */
+    UINT16                  BootFlags;          /* [V3] IA-PC Boot Architecture Flags (see below for individual flags) */
+    UINT8                   Reserved;           /* [V1] Reserved, must be zero */
+    UINT32                  Flags;              /* [V1] Miscellaneous flag bits (see below for individual flags) */
+    /* End of Version 1 FADT fields (ACPI 1.0) */
+
+    ACPI_GENERIC_ADDRESS    ResetRegister;      /* [V3] 64-bit address of the Reset register */
+    UINT8                   ResetValue;         /* [V3] Value to write to the ResetRegister port to reset the system */
+    UINT16                  ArmBootFlags;       /* [V5] ARM-Specific Boot Flags (see below for individual flags) (ACPI 5.1) */
+    UINT8                   MinorRevision;      /* [V5] FADT Minor Revision (ACPI 5.1) */
+    UINT64                  XFacs;              /* [V3] 64-bit physical address of FACS */
+    UINT64                  XDsdt;              /* [V3] 64-bit physical address of DSDT */
+    ACPI_GENERIC_ADDRESS    XPm1aEventBlock;    /* [V3] 64-bit Extended Power Mgt 1a Event Reg Blk address */
+    ACPI_GENERIC_ADDRESS    XPm1bEventBlock;    /* [V3] 64-bit Extended Power Mgt 1b Event Reg Blk address */
+    ACPI_GENERIC_ADDRESS    XPm1aControlBlock;  /* [V3] 64-bit Extended Power Mgt 1a Control Reg Blk address */
+    ACPI_GENERIC_ADDRESS    XPm1bControlBlock;  /* [V3] 64-bit Extended Power Mgt 1b Control Reg Blk address */
+    ACPI_GENERIC_ADDRESS    XPm2ControlBlock;   /* [V3] 64-bit Extended Power Mgt 2 Control Reg Blk address */
+    ACPI_GENERIC_ADDRESS    XPmTimerBlock;      /* [V3] 64-bit Extended Power Mgt Timer Ctrl Reg Blk address */
+    ACPI_GENERIC_ADDRESS    XGpe0Block;         /* [V3] 64-bit Extended General Purpose Event 0 Reg Blk address */
+    ACPI_GENERIC_ADDRESS    XGpe1Block;         /* [V3] 64-bit Extended General Purpose Event 1 Reg Blk address */
+    /* End of Version 3 FADT fields (ACPI 2.0) */
+
+    ACPI_GENERIC_ADDRESS    SleepControl;       /* [V4] 64-bit Sleep Control register (ACPI 5.0) */
+    /* End of Version 4 FADT fields (ACPI 3.0 and ACPI 4.0) (Field was originally reserved in ACPI 3.0) */
+
+    ACPI_GENERIC_ADDRESS    SleepStatus;        /* [V5] 64-bit Sleep Status register (ACPI 5.0) */
+    /* End of Version 5 FADT fields (ACPI 5.0) */
+
+    UINT64                  HypervisorId;       /* [V6] Hypervisor Vendor ID (ACPI 6.0) */
+    /* End of Version 6 FADT fields (ACPI 6.0) */
+
 
 } ACPI_TABLE_FADT;
 
@@ -327,8 +337,8 @@
 
 /* Masks for FADT ARM Boot Architecture Flags (arm_boot_flags) ACPI 5.1 */
 
-#define ACPI_FADT_PSCI_COMPLIANT    (1)         /* 00: [V5+] PSCI 0.2+ is implemented */
-#define ACPI_FADT_PSCI_USE_HVC      (1<<1)      /* 01: [V5+] HVC must be used instead of SMC as the PSCI conduit */
+#define ACPI_FADT_PSCI_COMPLIANT    (1)         /* 00: [V5] PSCI 0.2+ is implemented */
+#define ACPI_FADT_PSCI_USE_HVC      (1<<1)      /* 01: [V5] HVC must be used instead of SMC as the PSCI conduit */
 
 /* Masks for FADT flags */
 
@@ -435,20 +445,34 @@
  * match the expected length. In other words, the length of the
  * FADT is the bottom line as to what the version really is.
  *
- * For reference, the values below are as follows:
- *     FADT V1 size: 0x074
- *     FADT V2 size: 0x084
- *     FADT V3 size: 0x0F4
- *     FADT V4 size: 0x0F4
- *     FADT V5 size: 0x10C
- *     FADT V6 size: 0x114
+ * NOTE: There is no officialy released V2 of the FADT. This
+ * version was used only for prototyping and testing during the
+ * 32-bit to 64-bit transition. V3 was the first official 64-bit
+ * version of the FADT.
+ *
+ * Update this list of defines when a new version of the FADT is
+ * added to the ACPI specification. Note that the FADT version is
+ * only incremented when new fields are appended to the existing
+ * version. Therefore, the FADT version is competely independent
+ * from the version of the ACPI specification where it is
+ * defined.
+ *
+ * For reference, the various FADT lengths are as follows:
+ *     FADT V1 size: 0x074      ACPI 1.0
+ *     FADT V3 size: 0x0F4      ACPI 2.0
+ *     FADT V4 size: 0x100      ACPI 3.0 and ACPI 4.0
+ *     FADT V5 size: 0x10C      ACPI 5.0
+ *     FADT V6 size: 0x114      ACPI 6.0
  */
-#define ACPI_FADT_V1_SIZE       (UINT32) (ACPI_FADT_OFFSET (Flags) + 4)
-#define ACPI_FADT_V2_SIZE       (UINT32) (ACPI_FADT_OFFSET (MinorRevision) + 1)
-#define ACPI_FADT_V3_SIZE       (UINT32) (ACPI_FADT_OFFSET (SleepControl))
-#define ACPI_FADT_V5_SIZE       (UINT32) (ACPI_FADT_OFFSET (HypervisorId))
-#define ACPI_FADT_V6_SIZE       (UINT32) (sizeof (ACPI_TABLE_FADT))
+#define ACPI_FADT_V1_SIZE       (UINT32) (ACPI_FADT_OFFSET (Flags) + 4)         /* ACPI 1.0 */
+#define ACPI_FADT_V3_SIZE       (UINT32) (ACPI_FADT_OFFSET (SleepControl))      /* ACPI 2.0 */
+#define ACPI_FADT_V4_SIZE       (UINT32) (ACPI_FADT_OFFSET (SleepStatus))       /* ACPI 3.0 and ACPI 4.0 */
+#define ACPI_FADT_V5_SIZE       (UINT32) (ACPI_FADT_OFFSET (HypervisorId))      /* ACPI 5.0 */
+#define ACPI_FADT_V6_SIZE       (UINT32) (sizeof (ACPI_TABLE_FADT))             /* ACPI 6.0 */
 
+/* Update these when new FADT versions are added */
+
+#define ACPI_FADT_MAX_VERSION   6
 #define ACPI_FADT_CONFORMANCE   "ACPI 6.1 (FADT version 6)"
 
 #endif /* __ACTBL_H__ */
--- a/sys/external/bsd/acpica/dist/include/platform/accygwin.h	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/include/platform/accygwin.h	Fri Nov 11 19:14:16 2016 +0000
@@ -47,6 +47,7 @@
 /*
  * ACPICA configuration
  */
+#define ACPI_USE_STANDARD_HEADERS
 #define ACPI_USE_SYSTEM_CLIBRARY
 #define ACPI_USE_DO_WHILE_0
 #define ACPI_FLUSH_CPU_CACHE()
@@ -58,11 +59,9 @@
 #define ACPI_USE_ALTERNATE_TIMEOUT
 
 
-#include <stdarg.h>
-#include <string.h>
-#include <stdlib.h>
-#include <ctype.h>
+#ifdef ACPI_USE_STANDARD_HEADERS
 #include <unistd.h>
+#endif
 
 #if defined(__ia64__) || defined(__x86_64__)
 #define ACPI_MACHINE_WIDTH          64
@@ -86,10 +85,6 @@
 
 #define ACPI_CAST_PTHREAD_T(pthread) ((ACPI_THREAD_ID) ACPI_TO_INTEGER (pthread))
 
-/* Cygwin uses GCC */
-
-#include "acgcc.h"
-
 
 /*
  * The vsnprintf/snprintf functions are defined by c99, but cygwin/gcc
--- a/sys/external/bsd/acpica/dist/include/platform/acdragonfly.h	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/include/platform/acdragonfly.h	Fri Nov 11 19:14:16 2016 +0000
@@ -44,7 +44,6 @@
 #ifndef __ACDRAGONFLY_H_
 #define __ACDRAGONFLY_H_
 
-#include <platform/acgcc.h>     /* DragonFly uses GCC */
 #include <sys/types.h>
 
 #ifdef __LP64__
--- a/sys/external/bsd/acpica/dist/include/platform/acefi.h	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/include/platform/acefi.h	Fri Nov 11 19:14:16 2016 +0000
@@ -44,10 +44,12 @@
 #ifndef __ACEFI_H__
 #define __ACEFI_H__
 
-#include <stdarg.h>
-#if defined(_GNU_EFI)
-#include <stdint.h>
-#include <unistd.h>
+/* EDK2 EFI environemnt */
+
+#if defined(_EDK2_EFI)
+
+#define _GNU_EFI
+
 #endif
 
 #if defined(__x86_64__)
@@ -57,23 +59,13 @@
 #endif
 
 #ifdef _MSC_EXTENSIONS
-#define EFIAPI __cdecl
+#define ACPI_EFI_API __cdecl
 #elif USE_MS_ABI
-#define EFIAPI __attribute__((ms_abi))
+#define ACPI_EFI_API __attribute__((ms_abi))
 #else
-#define EFIAPI
+#define ACPI_EFI_API
 #endif
 
-typedef uint8_t     UINT8;
-typedef uint16_t    UINT16;
-typedef int16_t     INT16;
-typedef uint32_t    UINT32;
-typedef int32_t     INT32;
-typedef uint64_t    UINT64;
-typedef int64_t     INT64;
-typedef uint8_t     BOOLEAN;
-typedef uint16_t    CHAR16;
-
 #define VOID        void
 
 #if defined(__ia64__) || defined(__x86_64__)
@@ -94,23 +86,23 @@
 
 #endif
 
-typedef uint64_t    UINTN;
-typedef int64_t     INTN;
+#define UINTN       uint64_t
+#define INTN        int64_t
 
-#define EFIERR(a)           (0x8000000000000000 | a)
+#define ACPI_EFI_ERR(a)             (0x8000000000000000 | a)
 
 #else
 
 #define ACPI_MACHINE_WIDTH          32
-#define ACPI_USE_NATIVE_DIVIDE
 
-typedef uint32_t UINTN;
-typedef int32_t INTN;
+#define UINTN       uint32_t
+#define INTN        int32_t
 
-#define EFIERR(a)           (0x80000000 | a)
+#define ACPI_EFI_ERR(a)             (0x80000000 | a)
 
 #endif
 
+#define CHAR16      uint16_t
 
 #ifdef USE_EFI_FUNCTION_WRAPPER
 #define __VA_NARG__(...)                        \
@@ -230,15 +222,6 @@
 
 #if defined(_GNU_EFI)
 
-/* Using GCC for GNU EFI */
-
-#include "acgcc.h"
-
-#undef ACPI_USE_SYSTEM_CLIBRARY
-#undef ACPI_USE_STANDARD_HEADERS
-#undef ACPI_USE_NATIVE_DIVIDE
-#define ACPI_USE_SYSTEM_INTTYPES
-
 /*
  * Math helpers
  */
@@ -255,21 +238,22 @@
         (n_hi) >>= 1;                   \
     } while (0)
 
-
 #endif
 
-struct _SIMPLE_TEXT_OUTPUT_INTERFACE;
-struct _SIMPLE_INPUT_INTERFACE;
-struct _EFI_FILE_IO_INTERFACE;
-struct _EFI_FILE_HANDLE;
-struct _EFI_BOOT_SERVICES;
-struct _EFI_SYSTEM_TABLE;
+struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE;
+struct _ACPI_SIMPLE_INPUT_INTERFACE;
+struct _ACPI_EFI_FILE_IO_INTERFACE;
+struct _ACPI_EFI_FILE_HANDLE;
+struct _ACPI_EFI_BOOT_SERVICES;
+struct _ACPI_EFI_SYSTEM_TABLE;
+struct _ACPI_EFI_PCI_IO;
 
-extern struct _EFI_SYSTEM_TABLE         *ST;
-extern struct _EFI_BOOT_SERVICES        *BS;
+extern struct _ACPI_EFI_SYSTEM_TABLE        *ST;
+extern struct _ACPI_EFI_BOOT_SERVICES       *BS;
 
-#define ACPI_FILE           struct _SIMPLE_TEXT_OUTPUT_INTERFACE *
-#define ACPI_FILE_OUT       ST->ConOut
-#define ACPI_FILE_ERR       ST->ConOut
+#define FILE                struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE
+
+extern FILE                 *stdout;
+extern FILE                 *stderr;
 
 #endif /* __ACEFI_H__ */
--- a/sys/external/bsd/acpica/dist/include/platform/acefiex.h	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/include/platform/acefiex.h	Fri Nov 11 19:14:16 2016 +0000
@@ -45,177 +45,190 @@
 #define __ACEFIEX_H__
 
 
-#define EFI_ERROR(a)              (((INTN) a) < 0)
-#define EFI_SUCCESS                             0
-#define EFI_LOAD_ERROR                  EFIERR(1)
-#define EFI_INVALID_PARAMETER           EFIERR(2)
-#define EFI_UNSUPPORTED                 EFIERR(3)
-#define EFI_BAD_BUFFER_SIZE             EFIERR(4)
-#define EFI_BUFFER_TOO_SMALL            EFIERR(5)
-#define EFI_NOT_READY                   EFIERR(6)
-#define EFI_DEVICE_ERROR                EFIERR(7)
-#define EFI_WRITE_PROTECTED             EFIERR(8)
-#define EFI_OUT_OF_RESOURCES            EFIERR(9)
-#define EFI_VOLUME_CORRUPTED            EFIERR(10)
-#define EFI_VOLUME_FULL                 EFIERR(11)
-#define EFI_NO_MEDIA                    EFIERR(12)
-#define EFI_MEDIA_CHANGED               EFIERR(13)
-#define EFI_NOT_FOUND                   EFIERR(14)
-#define EFI_ACCESS_DENIED               EFIERR(15)
-#define EFI_NO_RESPONSE                 EFIERR(16)
-#define EFI_NO_MAPPING                  EFIERR(17)
-#define EFI_TIMEOUT                     EFIERR(18)
-#define EFI_NOT_STARTED                 EFIERR(19)
-#define EFI_ALREADY_STARTED             EFIERR(20)
-#define EFI_ABORTED                     EFIERR(21)
-#define EFI_PROTOCOL_ERROR              EFIERR(24)
+#ifndef ACPI_USE_SYSTEM_CLIBRARY
+
+typedef signed char                     int8_t;
+typedef short int                       int16_t;
+typedef int                             int32_t;
+typedef unsigned char                   uint8_t;
+typedef unsigned short int              uint16_t;
+typedef unsigned int                    uint32_t;
+typedef COMPILER_DEPENDENT_INT64        int64_t;
+typedef COMPILER_DEPENDENT_UINT64       uint64_t;
+
+#endif /* ACPI_USE_SYSTEM_CLIBRARY */
+
+#define ACPI_EFI_ERROR(a)               (((INTN) a) < 0)
+#define ACPI_EFI_SUCCESS                0
+#define ACPI_EFI_LOAD_ERROR             ACPI_EFI_ERR(1)
+#define ACPI_EFI_INVALID_PARAMETER      ACPI_EFI_ERR(2)
+#define ACPI_EFI_UNSUPPORTED            ACPI_EFI_ERR(3)
+#define ACPI_EFI_BAD_BUFFER_SIZE        ACPI_EFI_ERR(4)
+#define ACPI_EFI_BUFFER_TOO_SMALL       ACPI_EFI_ERR(5)
+#define ACPI_EFI_NOT_READY              ACPI_EFI_ERR(6)
+#define ACPI_EFI_DEVICE_ERROR           ACPI_EFI_ERR(7)
+#define ACPI_EFI_WRITE_PROTECTED        ACPI_EFI_ERR(8)
+#define ACPI_EFI_OUT_OF_RESOURCES       ACPI_EFI_ERR(9)
+#define ACPI_EFI_VOLUME_CORRUPTED       ACPI_EFI_ERR(10)
+#define ACPI_EFI_VOLUME_FULL            ACPI_EFI_ERR(11)
+#define ACPI_EFI_NO_MEDIA               ACPI_EFI_ERR(12)
+#define ACPI_EFI_MEDIA_CHANGED          ACPI_EFI_ERR(13)
+#define ACPI_EFI_NOT_FOUND              ACPI_EFI_ERR(14)
+#define ACPI_EFI_ACCESS_DENIED          ACPI_EFI_ERR(15)
+#define ACPI_EFI_NO_RESPONSE            ACPI_EFI_ERR(16)
+#define ACPI_EFI_NO_MAPPING             ACPI_EFI_ERR(17)
+#define ACPI_EFI_TIMEOUT                ACPI_EFI_ERR(18)
+#define ACPI_EFI_NOT_STARTED            ACPI_EFI_ERR(19)
+#define ACPI_EFI_ALREADY_STARTED        ACPI_EFI_ERR(20)
+#define ACPI_EFI_ABORTED                ACPI_EFI_ERR(21)
+#define ACPI_EFI_PROTOCOL_ERROR         ACPI_EFI_ERR(24)
 
 
-typedef UINTN EFI_STATUS;
-typedef VOID *EFI_HANDLE;
-typedef VOID *EFI_EVENT;
+typedef UINTN ACPI_EFI_STATUS;
+typedef VOID *ACPI_EFI_HANDLE;
+typedef VOID *ACPI_EFI_EVENT;
 
 typedef struct {
     UINT32  Data1;
     UINT16  Data2;
     UINT16  Data3;
     UINT8   Data4[8];
-} EFI_GUID;
+} ACPI_EFI_GUID;
 
-typedef struct _EFI_DEVICE_PATH {
+typedef struct _ACPI_EFI_DEVICE_PATH {
         UINT8                           Type;
         UINT8                           SubType;
         UINT8                           Length[2];
-} EFI_DEVICE_PATH;
+} ACPI_EFI_DEVICE_PATH;
 
-typedef UINT64          EFI_PHYSICAL_ADDRESS;
-typedef UINT64          EFI_VIRTUAL_ADDRESS;
+typedef UINT64          ACPI_EFI_PHYSICAL_ADDRESS;
+typedef UINT64          ACPI_EFI_VIRTUAL_ADDRESS;
 
 typedef enum {
-    AllocateAnyPages,
-    AllocateMaxAddress,
-    AllocateAddress,
-    MaxAllocateType
-} EFI_ALLOCATE_TYPE;
+    AcpiEfiAllocateAnyPages,
+    AcpiEfiAllocateMaxAddress,
+    AcpiEfiAllocateAddress,
+    AcpiEfiMaxAllocateType
+} ACPI_EFI_ALLOCATE_TYPE;
 
 typedef enum {
-    EfiReservedMemoryType,
-    EfiLoaderCode,
-    EfiLoaderData,
-    EfiBootServicesCode,
-    EfiBootServicesData,
-    EfiRuntimeServicesCode,
-    EfiRuntimeServicesData,
-    EfiConventionalMemory,
-    EfiUnusableMemory,
-    EfiACPIReclaimMemory,
-    EfiACPIMemoryNVS,
-    EfiMemoryMappedIO,
-    EfiMemoryMappedIOPortSpace,
-    EfiPalCode,
-    EfiMaxMemoryType
-} EFI_MEMORY_TYPE;
+    AcpiEfiReservedMemoryType,
+    AcpiEfiLoaderCode,
+    AcpiEfiLoaderData,
+    AcpiEfiBootServicesCode,
+    AcpiEfiBootServicesData,
+    AcpiEfiRuntimeServicesCode,
+    AcpiEfiRuntimeServicesData,
+    AcpiEfiConventionalMemory,
+    AcpiEfiUnusableMemory,
+    AcpiEfiACPIReclaimMemory,
+    AcpiEfiACPIMemoryNVS,
+    AcpiEfiMemoryMappedIO,
+    AcpiEfiMemoryMappedIOPortSpace,
+    AcpiEfiPalCode,
+    AcpiEfiMaxMemoryType
+} ACPI_EFI_MEMORY_TYPE;
 
 /* possible caching types for the memory range */
-#define EFI_MEMORY_UC           0x0000000000000001
-#define EFI_MEMORY_WC           0x0000000000000002
-#define EFI_MEMORY_WT           0x0000000000000004
-#define EFI_MEMORY_WB           0x0000000000000008
-#define EFI_MEMORY_UCE          0x0000000000000010
+#define ACPI_EFI_MEMORY_UC      0x0000000000000001
+#define ACPI_EFI_MEMORY_WC      0x0000000000000002
+#define ACPI_EFI_MEMORY_WT      0x0000000000000004
+#define ACPI_EFI_MEMORY_WB      0x0000000000000008
+#define ACPI_EFI_MEMORY_UCE     0x0000000000000010
 
 /* physical memory protection on range */
-#define EFI_MEMORY_WP           0x0000000000001000
-#define EFI_MEMORY_RP           0x0000000000002000
-#define EFI_MEMORY_XP           0x0000000000004000
+#define ACPI_EFI_MEMORY_WP      0x0000000000001000
+#define ACPI_EFI_MEMORY_RP      0x0000000000002000
+#define ACPI_EFI_MEMORY_XP      0x0000000000004000
 
 /* range requires a runtime mapping */
-#define EFI_MEMORY_RUNTIME      0x8000000000000000
+#define ACPI_EFI_MEMORY_RUNTIME 0x8000000000000000
 
-#define EFI_MEMORY_DESCRIPTOR_VERSION  1
+#define ACPI_EFI_MEMORY_DESCRIPTOR_VERSION  1
 typedef struct {
     UINT32                          Type;
     UINT32                          Pad;
-    EFI_PHYSICAL_ADDRESS            PhysicalStart;
-    EFI_VIRTUAL_ADDRESS             VirtualStart;
+    ACPI_EFI_PHYSICAL_ADDRESS       PhysicalStart;
+    ACPI_EFI_VIRTUAL_ADDRESS        VirtualStart;
     UINT64                          NumberOfPages;
     UINT64                          Attribute;
-} EFI_MEMORY_DESCRIPTOR;
+} ACPI_EFI_MEMORY_DESCRIPTOR;
 
-typedef struct _EFI_TABLE_HEARDER {
+typedef struct _ACPI_EFI_TABLE_HEARDER {
     UINT64                      Signature;
     UINT32                      Revision;
     UINT32                      HeaderSize;
     UINT32                      CRC32;
     UINT32                      Reserved;
-} EFI_TABLE_HEADER;
+} ACPI_EFI_TABLE_HEADER;
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_UNKNOWN_INTERFACE) (
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_UNKNOWN_INTERFACE) (
     void);
 
 
 /*
  * Text output protocol
  */
-#define SIMPLE_TEXT_OUTPUT_PROTOCOL \
+#define ACPI_SIMPLE_TEXT_OUTPUT_PROTOCOL \
     { 0x387477c2, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_TEXT_RESET) (
-    struct _SIMPLE_TEXT_OUTPUT_INTERFACE    *This,
-    BOOLEAN                                 ExtendedVerification);
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_TEXT_RESET) (
+    struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE   *This,
+    BOOLEAN                                     ExtendedVerification);
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_TEXT_OUTPUT_STRING) (
-    struct _SIMPLE_TEXT_OUTPUT_INTERFACE    *This,
-    CHAR16                                  *String);
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_TEXT_OUTPUT_STRING) (
+    struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE   *This,
+    CHAR16                                      *String);
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_TEXT_TEST_STRING) (
-    struct _SIMPLE_TEXT_OUTPUT_INTERFACE    *This,
-    CHAR16                                  *String);
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_TEXT_TEST_STRING) (
+    struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE   *This,
+    CHAR16                                      *String);
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_TEXT_QUERY_MODE) (
-    struct _SIMPLE_TEXT_OUTPUT_INTERFACE    *This,
-    UINTN                                   ModeNumber,
-    UINTN                                   *Columns,
-    UINTN                                   *Rows);
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_TEXT_QUERY_MODE) (
+    struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE   *This,
+    UINTN                                       ModeNumber,
+    UINTN                                       *Columns,
+    UINTN                                       *Rows);
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_TEXT_SET_MODE) (
-    struct _SIMPLE_TEXT_OUTPUT_INTERFACE    *This,
-    UINTN                                   ModeNumber);
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_TEXT_SET_MODE) (
+    struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE   *This,
+    UINTN                                       ModeNumber);
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_TEXT_SET_ATTRIBUTE) (
-    struct _SIMPLE_TEXT_OUTPUT_INTERFACE    *This,
-    UINTN                                   Attribute);
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_TEXT_SET_ATTRIBUTE) (
+    struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE   *This,
+    UINTN                                       Attribute);
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_TEXT_CLEAR_SCREEN) (
-    struct _SIMPLE_TEXT_OUTPUT_INTERFACE    *This);
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_TEXT_CLEAR_SCREEN) (
+    struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE   *This);
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_TEXT_SET_CURSOR_POSITION) (
-    struct _SIMPLE_TEXT_OUTPUT_INTERFACE    *This,
-    UINTN                                   Column,
-    UINTN                                   Row);
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_TEXT_SET_CURSOR_POSITION) (
+    struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE   *This,
+    UINTN                                       Column,
+    UINTN                                       Row);
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_TEXT_ENABLE_CURSOR) (
-    struct _SIMPLE_TEXT_OUTPUT_INTERFACE    *This,
-    BOOLEAN                                 Enable);
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_TEXT_ENABLE_CURSOR) (
+    struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE   *This,
+    BOOLEAN                                     Enable);
 
 typedef struct {
     INT32                           MaxMode;
@@ -224,35 +237,35 @@
     INT32                           CursorColumn;
     INT32                           CursorRow;
     BOOLEAN                         CursorVisible;
-} SIMPLE_TEXT_OUTPUT_MODE;
+} ACPI_SIMPLE_TEXT_OUTPUT_MODE;
 
-typedef struct _SIMPLE_TEXT_OUTPUT_INTERFACE {
-    EFI_TEXT_RESET                  Reset;
+typedef struct _ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE {
+    ACPI_EFI_TEXT_RESET                 Reset;
 
-    EFI_TEXT_OUTPUT_STRING          OutputString;
-    EFI_TEXT_TEST_STRING            TestString;
+    ACPI_EFI_TEXT_OUTPUT_STRING         OutputString;
+    ACPI_EFI_TEXT_TEST_STRING           TestString;
 
-    EFI_TEXT_QUERY_MODE             QueryMode;
-    EFI_TEXT_SET_MODE               SetMode;
-    EFI_TEXT_SET_ATTRIBUTE          SetAttribute;
+    ACPI_EFI_TEXT_QUERY_MODE            QueryMode;
+    ACPI_EFI_TEXT_SET_MODE              SetMode;
+    ACPI_EFI_TEXT_SET_ATTRIBUTE         SetAttribute;
 
-    EFI_TEXT_CLEAR_SCREEN           ClearScreen;
-    EFI_TEXT_SET_CURSOR_POSITION    SetCursorPosition;
-    EFI_TEXT_ENABLE_CURSOR          EnableCursor;
+    ACPI_EFI_TEXT_CLEAR_SCREEN          ClearScreen;
+    ACPI_EFI_TEXT_SET_CURSOR_POSITION   SetCursorPosition;
+    ACPI_EFI_TEXT_ENABLE_CURSOR         EnableCursor;
 
-    SIMPLE_TEXT_OUTPUT_MODE         *Mode;
-} SIMPLE_TEXT_OUTPUT_INTERFACE;
+    ACPI_SIMPLE_TEXT_OUTPUT_MODE        *Mode;
+} ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE;
 
 /*
  * Text input protocol
  */
-#define SIMPLE_TEXT_INPUT_PROTOCOL  \
+#define ACPI_SIMPLE_TEXT_INPUT_PROTOCOL  \
     { 0x387477c1, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
 
 typedef struct {
     UINT16                              ScanCode;
     CHAR16                              UnicodeChar;
-} EFI_INPUT_KEY;
+} ACPI_EFI_INPUT_KEY;
 
 /*
  * Baseline unicode control chars
@@ -264,243 +277,243 @@
 #define CHAR_CARRIAGE_RETURN            0x000D
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_INPUT_RESET) (
-    struct _SIMPLE_INPUT_INTERFACE              *This,
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_INPUT_RESET) (
+    struct _ACPI_SIMPLE_INPUT_INTERFACE         *This,
     BOOLEAN                                     ExtendedVerification);
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_INPUT_READ_KEY) (
-    struct _SIMPLE_INPUT_INTERFACE              *This,
-    EFI_INPUT_KEY                               *Key);
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_INPUT_READ_KEY) (
+    struct _ACPI_SIMPLE_INPUT_INTERFACE         *This,
+    ACPI_EFI_INPUT_KEY                          *Key);
 
-typedef struct _SIMPLE_INPUT_INTERFACE {
-    EFI_INPUT_RESET                     Reset;
-    EFI_INPUT_READ_KEY                  ReadKeyStroke;
-    EFI_EVENT                           WaitForKey;
-} SIMPLE_INPUT_INTERFACE;
+typedef struct _ACPI_SIMPLE_INPUT_INTERFACE {
+    ACPI_EFI_INPUT_RESET                    Reset;
+    ACPI_EFI_INPUT_READ_KEY                 ReadKeyStroke;
+    ACPI_EFI_EVENT                          WaitForKey;
+} ACPI_SIMPLE_INPUT_INTERFACE;
 
 
 /*
  * Simple file system protocol
  */
-#define SIMPLE_FILE_SYSTEM_PROTOCOL \
+#define ACPI_SIMPLE_FILE_SYSTEM_PROTOCOL \
     { 0x964e5b22, 0x6459, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_VOLUME_OPEN) (
-    struct _EFI_FILE_IO_INTERFACE               *This,
-    struct _EFI_FILE_HANDLE                     **Root);
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_VOLUME_OPEN) (
+    struct _ACPI_EFI_FILE_IO_INTERFACE          *This,
+    struct _ACPI_EFI_FILE_HANDLE                **Root);
 
-#define EFI_FILE_IO_INTERFACE_REVISION   0x00010000
+#define ACPI_EFI_FILE_IO_INTERFACE_REVISION     0x00010000
 
-typedef struct _EFI_FILE_IO_INTERFACE {
+typedef struct _ACPI_EFI_FILE_IO_INTERFACE {
     UINT64                  Revision;
-    EFI_VOLUME_OPEN         OpenVolume;
-} EFI_FILE_IO_INTERFACE;
+    ACPI_EFI_VOLUME_OPEN    OpenVolume;
+} ACPI_EFI_FILE_IO_INTERFACE;
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_FILE_OPEN) (
-    struct _EFI_FILE_HANDLE                     *File,
-    struct _EFI_FILE_HANDLE                     **NewHandle,
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_FILE_OPEN) (
+    struct _ACPI_EFI_FILE_HANDLE                *File,
+    struct _ACPI_EFI_FILE_HANDLE                **NewHandle,
     CHAR16                                      *FileName,
     UINT64                                      OpenMode,
     UINT64                                      Attributes);
 
 /* Values for OpenMode used above */
 
-#define EFI_FILE_MODE_READ      0x0000000000000001
-#define EFI_FILE_MODE_WRITE     0x0000000000000002
-#define EFI_FILE_MODE_CREATE    0x8000000000000000
+#define ACPI_EFI_FILE_MODE_READ     0x0000000000000001
+#define ACPI_EFI_FILE_MODE_WRITE    0x0000000000000002
+#define ACPI_EFI_FILE_MODE_CREATE   0x8000000000000000
 
 /* Values for Attribute used above */
 
-#define EFI_FILE_READ_ONLY      0x0000000000000001
-#define EFI_FILE_HIDDEN         0x0000000000000002
-#define EFI_FILE_SYSTEM         0x0000000000000004
-#define EFI_FILE_RESERVIED      0x0000000000000008
-#define EFI_FILE_DIRECTORY      0x0000000000000010
-#define EFI_FILE_ARCHIVE        0x0000000000000020
-#define EFI_FILE_VALID_ATTR     0x0000000000000037
+#define ACPI_EFI_FILE_READ_ONLY     0x0000000000000001
+#define ACPI_EFI_FILE_HIDDEN        0x0000000000000002
+#define ACPI_EFI_FILE_SYSTEM        0x0000000000000004
+#define ACPI_EFI_FILE_RESERVIED     0x0000000000000008
+#define ACPI_EFI_FILE_DIRECTORY     0x0000000000000010
+#define ACPI_EFI_FILE_ARCHIVE       0x0000000000000020
+#define ACPI_EFI_FILE_VALID_ATTR    0x0000000000000037
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_FILE_CLOSE) (
-    struct _EFI_FILE_HANDLE                     *File);
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_FILE_CLOSE) (
+    struct _ACPI_EFI_FILE_HANDLE                *File);
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_FILE_DELETE) (
-    struct _EFI_FILE_HANDLE                     *File);
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_FILE_DELETE) (
+    struct _ACPI_EFI_FILE_HANDLE                *File);
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_FILE_READ) (
-    struct _EFI_FILE_HANDLE                     *File,
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_FILE_READ) (
+    struct _ACPI_EFI_FILE_HANDLE                *File,
     UINTN                                       *BufferSize,
     VOID                                        *Buffer);
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_FILE_WRITE) (
-    struct _EFI_FILE_HANDLE                     *File,
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_FILE_WRITE) (
+    struct _ACPI_EFI_FILE_HANDLE                *File,
     UINTN                                       *BufferSize,
     VOID                                        *Buffer);
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_FILE_SET_POSITION) (
-    struct _EFI_FILE_HANDLE                     *File,
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_FILE_SET_POSITION) (
+    struct _ACPI_EFI_FILE_HANDLE                *File,
     UINT64                                      Position);
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_FILE_GET_POSITION) (
-    struct _EFI_FILE_HANDLE                     *File,
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_FILE_GET_POSITION) (
+    struct _ACPI_EFI_FILE_HANDLE                *File,
     UINT64                                      *Position);
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_FILE_GET_INFO) (
-    struct _EFI_FILE_HANDLE                     *File,
-    EFI_GUID                                    *InformationType,
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_FILE_GET_INFO) (
+    struct _ACPI_EFI_FILE_HANDLE                *File,
+    ACPI_EFI_GUID                               *InformationType,
     UINTN                                       *BufferSize,
     VOID                                        *Buffer);
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_FILE_SET_INFO) (
-    struct _EFI_FILE_HANDLE                     *File,
-    EFI_GUID                                    *InformationType,
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_FILE_SET_INFO) (
+    struct _ACPI_EFI_FILE_HANDLE                *File,
+    ACPI_EFI_GUID                               *InformationType,
     UINTN                                       BufferSize,
     VOID                                        *Buffer);
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_FILE_FLUSH) (
-    struct _EFI_FILE_HANDLE                     *File);
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_FILE_FLUSH) (
+    struct _ACPI_EFI_FILE_HANDLE                *File);
 
 
-#define EFI_FILE_HANDLE_REVISION         0x00010000
+#define ACPI_EFI_FILE_HANDLE_REVISION           0x00010000
 
-typedef struct _EFI_FILE_HANDLE {
-    UINT64                  Revision;
-    EFI_FILE_OPEN           Open;
-    EFI_FILE_CLOSE          Close;
-    EFI_FILE_DELETE         Delete;
-    EFI_FILE_READ           Read;
-    EFI_FILE_WRITE          Write;
-    EFI_FILE_GET_POSITION   GetPosition;
-    EFI_FILE_SET_POSITION   SetPosition;
-    EFI_FILE_GET_INFO       GetInfo;
-    EFI_FILE_SET_INFO       SetInfo;
-    EFI_FILE_FLUSH          Flush;
-} EFI_FILE, *EFI_FILE_HANDLE;
+typedef struct _ACPI_EFI_FILE_HANDLE {
+    UINT64                      Revision;
+    ACPI_EFI_FILE_OPEN          Open;
+    ACPI_EFI_FILE_CLOSE         Close;
+    ACPI_EFI_FILE_DELETE        Delete;
+    ACPI_EFI_FILE_READ          Read;
+    ACPI_EFI_FILE_WRITE         Write;
+    ACPI_EFI_FILE_GET_POSITION  GetPosition;
+    ACPI_EFI_FILE_SET_POSITION  SetPosition;
+    ACPI_EFI_FILE_GET_INFO      GetInfo;
+    ACPI_EFI_FILE_SET_INFO      SetInfo;
+    ACPI_EFI_FILE_FLUSH         Flush;
+} ACPI_EFI_FILE_STRUCT, *ACPI_EFI_FILE_HANDLE;
 
 
 /*
  * Loaded image protocol
  */
-#define LOADED_IMAGE_PROTOCOL      \
+#define ACPI_EFI_LOADED_IMAGE_PROTOCOL \
     { 0x5B1B31A1, 0x9562, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B} }
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_IMAGE_ENTRY_POINT) (
-    EFI_HANDLE                              ImageHandle,
-    struct _EFI_SYSTEM_TABLE                *SystemTable);
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_IMAGE_ENTRY_POINT) (
+    ACPI_EFI_HANDLE                         ImageHandle,
+    struct _ACPI_EFI_SYSTEM_TABLE           *SystemTable);
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_IMAGE_LOAD) (
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_IMAGE_LOAD) (
     BOOLEAN                         BootPolicy,
-    EFI_HANDLE                      ParentImageHandle,
-    EFI_DEVICE_PATH                 *FilePath,
+    ACPI_EFI_HANDLE                 ParentImageHandle,
+    ACPI_EFI_DEVICE_PATH            *FilePath,
     VOID                            *SourceBuffer,
     UINTN                           SourceSize,
-    EFI_HANDLE                      *ImageHandle);
+    ACPI_EFI_HANDLE                 *ImageHandle);
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_IMAGE_START) (
-    EFI_HANDLE                      ImageHandle,
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_IMAGE_START) (
+    ACPI_EFI_HANDLE                 ImageHandle,
     UINTN                           *ExitDataSize,
     CHAR16                          **ExitData);
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_EXIT) (
-    EFI_HANDLE                      ImageHandle,
-    EFI_STATUS                      ExitStatus,
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_EXIT) (
+    ACPI_EFI_HANDLE                 ImageHandle,
+    ACPI_EFI_STATUS                 ExitStatus,
     UINTN                           ExitDataSize,
     CHAR16                          *ExitData);
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_IMAGE_UNLOAD) (
-    EFI_HANDLE                      ImageHandle);
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_IMAGE_UNLOAD) (
+    ACPI_EFI_HANDLE                 ImageHandle);
 
 
 #define EFI_IMAGE_INFORMATION_REVISION      0x1000
 typedef struct {
     UINT32                          Revision;
-    EFI_HANDLE                      ParentHandle;
-    struct _EFI_SYSTEM_TABLE        *SystemTable;
-    EFI_HANDLE                      DeviceHandle;
-    EFI_DEVICE_PATH                 *FilePath;
+    ACPI_EFI_HANDLE                 ParentHandle;
+    struct _ACPI_EFI_SYSTEM_TABLE   *SystemTable;
+    ACPI_EFI_HANDLE                 DeviceHandle;
+    ACPI_EFI_DEVICE_PATH            *FilePath;
     VOID                            *Reserved;
     UINT32                          LoadOptionsSize;
     VOID                            *LoadOptions;
     VOID                            *ImageBase;
     UINT64                          ImageSize;
-    EFI_MEMORY_TYPE                 ImageCodeType;
-    EFI_MEMORY_TYPE                 ImageDataType;
-    EFI_IMAGE_UNLOAD                Unload;
+    ACPI_EFI_MEMORY_TYPE            ImageCodeType;
+    ACPI_EFI_MEMORY_TYPE            ImageDataType;
+    ACPI_EFI_IMAGE_UNLOAD           Unload;
 
-} EFI_LOADED_IMAGE;
+} ACPI_EFI_LOADED_IMAGE;
 
 
 /*
  * EFI Memory
  */
 typedef
-EFI_STATUS
-(EFIAPI *EFI_ALLOCATE_PAGES) (
-    EFI_ALLOCATE_TYPE               Type,
-    EFI_MEMORY_TYPE                 MemoryType,
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_ALLOCATE_PAGES) (
+    ACPI_EFI_ALLOCATE_TYPE          Type,
+    ACPI_EFI_MEMORY_TYPE            MemoryType,
     UINTN                           NoPages,
-    EFI_PHYSICAL_ADDRESS            *Memory);
+    ACPI_EFI_PHYSICAL_ADDRESS       *Memory);
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_FREE_PAGES) (
-    EFI_PHYSICAL_ADDRESS            Memory,
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_FREE_PAGES) (
+    ACPI_EFI_PHYSICAL_ADDRESS       Memory,
     UINTN                           NoPages);
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_GET_MEMORY_MAP) (
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_GET_MEMORY_MAP) (
     UINTN                           *MemoryMapSize,
-    EFI_MEMORY_DESCRIPTOR           *MemoryMap,
+    ACPI_EFI_MEMORY_DESCRIPTOR      *MemoryMap,
     UINTN                           *MapKey,
     UINTN                           *DescriptorSize,
     UINT32                          *DescriptorVersion);
 
-#define NextMemoryDescriptor(Ptr,Size)  ((EFI_MEMORY_DESCRIPTOR *) (((UINT8 *) Ptr) + Size))
+#define NextMemoryDescriptor(Ptr,Size)  ((ACPI_EFI_MEMORY_DESCRIPTOR *) (((UINT8 *) Ptr) + Size))
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_ALLOCATE_POOL) (
-    EFI_MEMORY_TYPE                 PoolType,
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_ALLOCATE_POOL) (
+    ACPI_EFI_MEMORY_TYPE            PoolType,
     UINTN                           Size,
     VOID                            **Buffer);
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_FREE_POOL) (
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_FREE_POOL) (
     VOID                            *Buffer);
 
 
@@ -508,167 +521,167 @@
  * Protocol handler functions
  */
 typedef enum {
-    EFI_NATIVE_INTERFACE,
-    EFI_PCODE_INTERFACE
-} EFI_INTERFACE_TYPE;
+    ACPI_EFI_NATIVE_INTERFACE,
+    ACPI_EFI_PCODE_INTERFACE
+} ACPI_EFI_INTERFACE_TYPE;
 
 typedef enum {
-    AllHandles,
-    ByRegisterNotify,
-    ByProtocol
-} EFI_LOCATE_SEARCH_TYPE;
+    AcpiEfiAllHandles,
+    AcpiEfiByRegisterNotify,
+    AcpiEfiByProtocol
+} ACPI_EFI_LOCATE_SEARCH_TYPE;
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_INSTALL_PROTOCOL_INTERFACE) (
-    EFI_HANDLE                      *Handle,
-    EFI_GUID                        *Protocol,
-    EFI_INTERFACE_TYPE              InterfaceType,
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_INSTALL_PROTOCOL_INTERFACE) (
+    ACPI_EFI_HANDLE                 *Handle,
+    ACPI_EFI_GUID                   *Protocol,
+    ACPI_EFI_INTERFACE_TYPE         InterfaceType,
     VOID                            *Interface);
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_REINSTALL_PROTOCOL_INTERFACE) (
-    EFI_HANDLE                      Handle,
-    EFI_GUID                        *Protocol,
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_REINSTALL_PROTOCOL_INTERFACE) (
+    ACPI_EFI_HANDLE                 Handle,
+    ACPI_EFI_GUID                   *Protocol,
     VOID                            *OldInterface,
     VOID                            *NewInterface);
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_UNINSTALL_PROTOCOL_INTERFACE) (
-    EFI_HANDLE                      Handle,
-    EFI_GUID                        *Protocol,
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_UNINSTALL_PROTOCOL_INTERFACE) (
+    ACPI_EFI_HANDLE                 Handle,
+    ACPI_EFI_GUID                   *Protocol,
     VOID                            *Interface);
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_HANDLE_PROTOCOL) (
-    EFI_HANDLE                      Handle,
-    EFI_GUID                        *Protocol,
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_HANDLE_PROTOCOL) (
+    ACPI_EFI_HANDLE                 Handle,
+    ACPI_EFI_GUID                   *Protocol,
     VOID                            **Interface);
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_REGISTER_PROTOCOL_NOTIFY) (
-    EFI_GUID                        *Protocol,
-    EFI_EVENT                       Event,
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_REGISTER_PROTOCOL_NOTIFY) (
+    ACPI_EFI_GUID                   *Protocol,
+    ACPI_EFI_EVENT                  Event,
     VOID                            **Registration);
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_LOCATE_HANDLE) (
-    EFI_LOCATE_SEARCH_TYPE          SearchType,
-    EFI_GUID                        *Protocol,
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_LOCATE_HANDLE) (
+    ACPI_EFI_LOCATE_SEARCH_TYPE     SearchType,
+    ACPI_EFI_GUID                   *Protocol,
     VOID                            *SearchKey,
     UINTN                           *BufferSize,
-    EFI_HANDLE                      *Buffer);
+    ACPI_EFI_HANDLE                 *Buffer);
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_LOCATE_DEVICE_PATH) (
-    EFI_GUID                        *Protocol,
-    EFI_DEVICE_PATH                 **DevicePath,
-    EFI_HANDLE                      *Device);
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_LOCATE_DEVICE_PATH) (
+    ACPI_EFI_GUID                   *Protocol,
+    ACPI_EFI_DEVICE_PATH            **DevicePath,
+    ACPI_EFI_HANDLE                 *Device);
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_INSTALL_CONFIGURATION_TABLE) (
-    EFI_GUID                        *Guid,
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_INSTALL_CONFIGURATION_TABLE) (
+    ACPI_EFI_GUID                   *Guid,
     VOID                            *Table);
 
-#define EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL  0x00000001
-#define EFI_OPEN_PROTOCOL_GET_PROTOCOL        0x00000002
-#define EFI_OPEN_PROTOCOL_TEST_PROTOCOL       0x00000004
-#define EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER 0x00000008
-#define EFI_OPEN_PROTOCOL_BY_DRIVER           0x00000010
-#define EFI_OPEN_PROTOCOL_EXCLUSIVE           0x00000020
+#define ACPI_EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL  0x00000001
+#define ACPI_EFI_OPEN_PROTOCOL_GET_PROTOCOL        0x00000002
+#define ACPI_EFI_OPEN_PROTOCOL_TEST_PROTOCOL       0x00000004
+#define ACPI_EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER 0x00000008
+#define ACPI_EFI_OPEN_PROTOCOL_BY_DRIVER           0x00000010
+#define ACPI_EFI_OPEN_PROTOCOL_EXCLUSIVE           0x00000020
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_OPEN_PROTOCOL) (
-    EFI_HANDLE                      Handle,
-    EFI_GUID                        *Protocol,
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_OPEN_PROTOCOL) (
+    ACPI_EFI_HANDLE                 Handle,
+    ACPI_EFI_GUID                   *Protocol,
     VOID                            **Interface,
-    EFI_HANDLE                      AgentHandle,
-    EFI_HANDLE                      ControllerHandle,
+    ACPI_EFI_HANDLE                 AgentHandle,
+    ACPI_EFI_HANDLE                 ControllerHandle,
     UINT32                          Attributes);
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_CLOSE_PROTOCOL) (
-    EFI_HANDLE                      Handle,
-    EFI_GUID                        *Protocol,
-    EFI_HANDLE                      AgentHandle,
-    EFI_HANDLE                      ControllerHandle);
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_CLOSE_PROTOCOL) (
+    ACPI_EFI_HANDLE                 Handle,
+    ACPI_EFI_GUID                   *Protocol,
+    ACPI_EFI_HANDLE                 AgentHandle,
+    ACPI_EFI_HANDLE                 ControllerHandle);
 
 typedef struct {
-    EFI_HANDLE                  AgentHandle;
-    EFI_HANDLE                  ControllerHandle;
-    UINT32                      Attributes;
-    UINT32                      OpenCount;
-} EFI_OPEN_PROTOCOL_INFORMATION_ENTRY;
+    ACPI_EFI_HANDLE                 AgentHandle;
+    ACPI_EFI_HANDLE                 ControllerHandle;
+    UINT32                          Attributes;
+    UINT32                          OpenCount;
+} ACPI_EFI_OPEN_PROTOCOL_INFORMATION_ENTRY;
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_OPEN_PROTOCOL_INFORMATION) (
-    EFI_HANDLE                      Handle,
-    EFI_GUID                        *Protocol,
-    EFI_OPEN_PROTOCOL_INFORMATION_ENTRY **EntryBuffer,
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_OPEN_PROTOCOL_INFORMATION) (
+    ACPI_EFI_HANDLE                 Handle,
+    ACPI_EFI_GUID                   *Protocol,
+    ACPI_EFI_OPEN_PROTOCOL_INFORMATION_ENTRY **EntryBuffer,
     UINTN                           *EntryCount);
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_PROTOCOLS_PER_HANDLE) (
-    EFI_HANDLE                      Handle,
-    EFI_GUID                        ***ProtocolBuffer,
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_PROTOCOLS_PER_HANDLE) (
+    ACPI_EFI_HANDLE                 Handle,
+    ACPI_EFI_GUID                   ***ProtocolBuffer,
     UINTN                           *ProtocolBufferCount);
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_LOCATE_HANDLE_BUFFER) (
-    EFI_LOCATE_SEARCH_TYPE          SearchType,
-    EFI_GUID                        *Protocol,
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_LOCATE_HANDLE_BUFFER) (
+    ACPI_EFI_LOCATE_SEARCH_TYPE     SearchType,
+    ACPI_EFI_GUID                   *Protocol,
     VOID                            *SearchKey,
     UINTN                           *NoHandles,
-    EFI_HANDLE                      **Buffer);
+    ACPI_EFI_HANDLE                 **Buffer);
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_LOCATE_PROTOCOL) (
-    EFI_GUID                        *Protocol,
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_LOCATE_PROTOCOL) (
+    ACPI_EFI_GUID                   *Protocol,
     VOID                            *Registration,
     VOID                            **Interface);
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES) (
-    EFI_HANDLE                      *Handle,
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES) (
+    ACPI_EFI_HANDLE                 *Handle,
     ...);
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES) (
-    EFI_HANDLE                      Handle,
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES) (
+    ACPI_EFI_HANDLE                 Handle,
     ...);
 
 typedef
-EFI_STATUS
-(EFIAPI *EFI_CALCULATE_CRC32) (
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_CALCULATE_CRC32) (
     VOID                            *Data,
     UINTN                           DataSize,
     UINT32                          *Crc32);
 
 typedef
 VOID
-(EFIAPI *EFI_COPY_MEM) (
+(ACPI_EFI_API *ACPI_EFI_COPY_MEM) (
     VOID                            *Destination,
     VOID                            *Source,
     UINTN                           Length);
 
 typedef
 VOID
-(EFIAPI *EFI_SET_MEM) (
+(ACPI_EFI_API *ACPI_EFI_SET_MEM) (
     VOID                            *Buffer,
     UINTN                           Size,
     UINT8                           Value);
@@ -676,97 +689,97 @@
 /*
  * EFI Boot Services Table
  */
-#define EFI_BOOT_SERVICES_SIGNATURE     0x56524553544f4f42
-#define EFI_BOOT_SERVICES_REVISION      (EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION)
+#define ACPI_EFI_BOOT_SERVICES_SIGNATURE 0x56524553544f4f42
+#define ACPI_EFI_BOOT_SERVICES_REVISION  (ACPI_EFI_SPECIFICATION_MAJOR_REVISION<<16) | (ACPI_EFI_SPECIFICATION_MINOR_REVISION)
 
-typedef struct _EFI_BOOT_SERVICES {
-    EFI_TABLE_HEADER                Hdr;
+typedef struct _ACPI_EFI_BOOT_SERVICES {
+    ACPI_EFI_TABLE_HEADER               Hdr;
 
 #if 0
-    EFI_RAISE_TPL                   RaiseTPL;
-    EFI_RESTORE_TPL                 RestoreTPL;
+    ACPI_EFI_RAISE_TPL                  RaiseTPL;
+    ACPI_EFI_RESTORE_TPL                RestoreTPL;
 #else
-    EFI_UNKNOWN_INTERFACE           RaiseTPL;
-    EFI_UNKNOWN_INTERFACE           RestoreTPL;
+    ACPI_EFI_UNKNOWN_INTERFACE          RaiseTPL;
+    ACPI_EFI_UNKNOWN_INTERFACE          RestoreTPL;
 #endif
 
-    EFI_ALLOCATE_PAGES              AllocatePages;
-    EFI_FREE_PAGES                  FreePages;
-    EFI_GET_MEMORY_MAP              GetMemoryMap;
-    EFI_ALLOCATE_POOL               AllocatePool;
-    EFI_FREE_POOL                   FreePool;
+    ACPI_EFI_ALLOCATE_PAGES             AllocatePages;
+    ACPI_EFI_FREE_PAGES                 FreePages;
+    ACPI_EFI_GET_MEMORY_MAP             GetMemoryMap;
+    ACPI_EFI_ALLOCATE_POOL              AllocatePool;
+    ACPI_EFI_FREE_POOL                  FreePool;
 
 #if 0
-    EFI_CREATE_EVENT                CreateEvent;
-    EFI_SET_TIMER                   SetTimer;
-    EFI_WAIT_FOR_EVENT              WaitForEvent;
-    EFI_SIGNAL_EVENT                SignalEvent;
-    EFI_CLOSE_EVENT                 CloseEvent;
-    EFI_CHECK_EVENT                 CheckEvent;
+    ACPI_EFI_CREATE_EVENT               CreateEvent;
+    ACPI_EFI_SET_TIMER                  SetTimer;
+    ACPI_EFI_WAIT_FOR_EVENT             WaitForEvent;
+    ACPI_EFI_SIGNAL_EVENT               SignalEvent;
+    ACPI_EFI_CLOSE_EVENT                CloseEvent;
+    ACPI_EFI_CHECK_EVENT                CheckEvent;
 #else
-    EFI_UNKNOWN_INTERFACE           CreateEvent;
-    EFI_UNKNOWN_INTERFACE           SetTimer;
-    EFI_UNKNOWN_INTERFACE           WaitForEvent;
-    EFI_UNKNOWN_INTERFACE           SignalEvent;
-    EFI_UNKNOWN_INTERFACE           CloseEvent;
-    EFI_UNKNOWN_INTERFACE           CheckEvent;
+    ACPI_EFI_UNKNOWN_INTERFACE          CreateEvent;
+    ACPI_EFI_UNKNOWN_INTERFACE          SetTimer;
+    ACPI_EFI_UNKNOWN_INTERFACE          WaitForEvent;
+    ACPI_EFI_UNKNOWN_INTERFACE          SignalEvent;
+    ACPI_EFI_UNKNOWN_INTERFACE          CloseEvent;
+    ACPI_EFI_UNKNOWN_INTERFACE          CheckEvent;
 #endif
 
-    EFI_INSTALL_PROTOCOL_INTERFACE  InstallProtocolInterface;
-    EFI_REINSTALL_PROTOCOL_INTERFACE ReinstallProtocolInterface;
-    EFI_UNINSTALL_PROTOCOL_INTERFACE UninstallProtocolInterface;
-    EFI_HANDLE_PROTOCOL             HandleProtocol;
-    EFI_HANDLE_PROTOCOL             PCHandleProtocol;
-    EFI_REGISTER_PROTOCOL_NOTIFY    RegisterProtocolNotify;
-    EFI_LOCATE_HANDLE               LocateHandle;
-    EFI_LOCATE_DEVICE_PATH          LocateDevicePath;
-    EFI_INSTALL_CONFIGURATION_TABLE InstallConfigurationTable;
+    ACPI_EFI_INSTALL_PROTOCOL_INTERFACE InstallProtocolInterface;
+    ACPI_EFI_REINSTALL_PROTOCOL_INTERFACE ReinstallProtocolInterface;
+    ACPI_EFI_UNINSTALL_PROTOCOL_INTERFACE UninstallProtocolInterface;
+    ACPI_EFI_HANDLE_PROTOCOL            HandleProtocol;
+    ACPI_EFI_HANDLE_PROTOCOL            PCHandleProtocol;
+    ACPI_EFI_REGISTER_PROTOCOL_NOTIFY   RegisterProtocolNotify;
+    ACPI_EFI_LOCATE_HANDLE              LocateHandle;
+    ACPI_EFI_LOCATE_DEVICE_PATH         LocateDevicePath;
+    ACPI_EFI_INSTALL_CONFIGURATION_TABLE InstallConfigurationTable;
 
-    EFI_IMAGE_LOAD                  LoadImage;
-    EFI_IMAGE_START                 StartImage;
-    EFI_EXIT                        Exit;
-    EFI_IMAGE_UNLOAD                UnloadImage;
+    ACPI_EFI_IMAGE_LOAD                 LoadImage;
+    ACPI_EFI_IMAGE_START                StartImage;
+    ACPI_EFI_EXIT                       Exit;
+    ACPI_EFI_IMAGE_UNLOAD               UnloadImage;
 
 #if 0
-    EFI_EXIT_BOOT_SERVICES          ExitBootServices;
-    EFI_GET_NEXT_MONOTONIC_COUNT    GetNextMonotonicCount;
-    EFI_STALL                       Stall;
-    EFI_SET_WATCHDOG_TIMER          SetWatchdogTimer;
+    ACPI_EFI_EXIT_BOOT_SERVICES         ExitBootServices;
+    ACPI_EFI_GET_NEXT_MONOTONIC_COUNT   GetNextMonotonicCount;
+    ACPI_EFI_STALL                      Stall;
+    ACPI_EFI_SET_WATCHDOG_TIMER         SetWatchdogTimer;
 #else
-    EFI_UNKNOWN_INTERFACE           ExitBootServices;
-    EFI_UNKNOWN_INTERFACE           GetNextMonotonicCount;
-    EFI_UNKNOWN_INTERFACE           Stall;
-    EFI_UNKNOWN_INTERFACE           SetWatchdogTimer;
+    ACPI_EFI_UNKNOWN_INTERFACE          ExitBootServices;
+    ACPI_EFI_UNKNOWN_INTERFACE          GetNextMonotonicCount;
+    ACPI_EFI_UNKNOWN_INTERFACE          Stall;
+    ACPI_EFI_UNKNOWN_INTERFACE          SetWatchdogTimer;
 #endif
 
 #if 0
-    EFI_CONNECT_CONTROLLER          ConnectController;
-    EFI_DISCONNECT_CONTROLLER       DisconnectController;
+    ACPI_EFI_CONNECT_CONTROLLER         ConnectController;
+    ACPI_EFI_DISCONNECT_CONTROLLER      DisconnectController;
 #else
-    EFI_UNKNOWN_INTERFACE           ConnectController;
-    EFI_UNKNOWN_INTERFACE           DisconnectController;
+    ACPI_EFI_UNKNOWN_INTERFACE          ConnectController;
+    ACPI_EFI_UNKNOWN_INTERFACE          DisconnectController;
 #endif
 
-    EFI_OPEN_PROTOCOL               OpenProtocol;
-    EFI_CLOSE_PROTOCOL              CloseProtocol;
-    EFI_OPEN_PROTOCOL_INFORMATION   OpenProtocolInformation;
-    EFI_PROTOCOLS_PER_HANDLE        ProtocolsPerHandle;
-    EFI_LOCATE_HANDLE_BUFFER        LocateHandleBuffer;
-    EFI_LOCATE_PROTOCOL             LocateProtocol;
-    EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES InstallMultipleProtocolInterfaces;
-    EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES UninstallMultipleProtocolInterfaces;
+    ACPI_EFI_OPEN_PROTOCOL              OpenProtocol;
+    ACPI_EFI_CLOSE_PROTOCOL             CloseProtocol;
+    ACPI_EFI_OPEN_PROTOCOL_INFORMATION  OpenProtocolInformation;
+    ACPI_EFI_PROTOCOLS_PER_HANDLE       ProtocolsPerHandle;
+    ACPI_EFI_LOCATE_HANDLE_BUFFER       LocateHandleBuffer;
+    ACPI_EFI_LOCATE_PROTOCOL            LocateProtocol;
+    ACPI_EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES InstallMultipleProtocolInterfaces;
+    ACPI_EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES UninstallMultipleProtocolInterfaces;
 
-    EFI_CALCULATE_CRC32             CalculateCrc32;
+    ACPI_EFI_CALCULATE_CRC32        CalculateCrc32;
 
-    EFI_COPY_MEM                    CopyMem;
-    EFI_SET_MEM                     SetMem;
+    ACPI_EFI_COPY_MEM               CopyMem;
+    ACPI_EFI_SET_MEM                SetMem;
 
 #if 0
-    EFI_CREATE_EVENT_EX             CreateEventEx;
+    ACPI_EFI_CREATE_EVENT_EX        CreateEventEx;
 #else
-    EFI_UNKNOWN_INTERFACE           CreateEventEx;
+    ACPI_EFI_UNKNOWN_INTERFACE      CreateEventEx;
 #endif
-} EFI_BOOT_SERVICES;
+} ACPI_EFI_BOOT_SERVICES;
 
 
 /*
@@ -776,47 +789,112 @@
 /*
  * EFI Configuration Table and GUID definitions
  */
-#define ACPI_TABLE_GUID    \
+#define ACPI_TABLE_GUID \
     { 0xeb9d2d30, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
-#define ACPI_20_TABLE_GUID  \
+#define ACPI_20_TABLE_GUID \
     { 0x8868e871, 0xe4f1, 0x11d3, {0xbc, 0x22, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} }
 
-typedef struct _EFI_CONFIGURATION_TABLE {
-    EFI_GUID                VendorGuid;
+typedef struct _ACPI_EFI_CONFIGURATION_TABLE {
+    ACPI_EFI_GUID           VendorGuid;
     VOID                    *VendorTable;
-} EFI_CONFIGURATION_TABLE;
+} ACPI_EFI_CONFIGURATION_TABLE;
+
+
+#define ACPI_EFI_SYSTEM_TABLE_SIGNATURE 0x5453595320494249
+#define ACPI_EFI_SYSTEM_TABLE_REVISION  (ACPI_EFI_SPECIFICATION_MAJOR_REVISION<<16) | (ACPI_EFI_SPECIFICATION_MINOR_REVISION)
+
+typedef struct _ACPI_EFI_SYSTEM_TABLE {
+    ACPI_EFI_TABLE_HEADER               Hdr;
+
+    CHAR16                              *FirmwareVendor;
+    UINT32                              FirmwareRevision;
+
+    ACPI_EFI_HANDLE                     ConsoleInHandle;
+    ACPI_SIMPLE_INPUT_INTERFACE         *ConIn;
+
+    ACPI_EFI_HANDLE                     ConsoleOutHandle;
+    ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE   *ConOut;
+
+    ACPI_EFI_HANDLE                     StandardErrorHandle;
+    ACPI_SIMPLE_TEXT_OUTPUT_INTERFACE   *StdErr;
+
+#if 0
+    ACPI_EFI_RUNTIME_SERVICES           *RuntimeServices;
+#else
+    ACPI_EFI_HANDLE                     *RuntimeServices;
+#endif
+    ACPI_EFI_BOOT_SERVICES              *BootServices;
+
+    UINTN                               NumberOfTableEntries;
+    ACPI_EFI_CONFIGURATION_TABLE        *ConfigurationTable;
+
+} ACPI_EFI_SYSTEM_TABLE;
 
 
-#define EFI_SYSTEM_TABLE_SIGNATURE      0x5453595320494249
-#define EFI_SYSTEM_TABLE_REVISION      (EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION)
-
-typedef struct _EFI_SYSTEM_TABLE {
-    EFI_TABLE_HEADER                Hdr;
+/*
+ * EFI PCI I/O Protocol
+ */
+#define ACPI_EFI_PCI_IO_PROTOCOL \
+    { 0x4cf5b200, 0x68b8, 0x4ca5, {0x9e, 0xec, 0xb2, 0x3e, 0x3f, 0x50, 0x2, 0x9a} }
 
-    CHAR16                          *FirmwareVendor;
-    UINT32                          FirmwareRevision;
+typedef enum {
+    AcpiEfiPciIoWidthUint8 = 0,
+    AcpiEfiPciIoWidthUint16,
+    AcpiEfiPciIoWidthUint32,
+    AcpiEfiPciIoWidthUint64,
+    AcpiEfiPciIoWidthFifoUint8,
+    AcpiEfiPciIoWidthFifoUint16,
+    AcpiEfiPciIoWidthFifoUint32,
+    AcpiEfiPciIoWidthFifoUint64,
+    AcpiEfiPciIoWidthFillUint8,
+    AcpiEfiPciIoWidthFillUint16,
+    AcpiEfiPciIoWidthFillUint32,
+    AcpiEfiPciIoWidthFillUint64,
+    AcpiEfiPciIoWidthMaximum
+} ACPI_EFI_PCI_IO_PROTOCOL_WIDTH;
 
-    EFI_HANDLE                      ConsoleInHandle;
-    SIMPLE_INPUT_INTERFACE          *ConIn;
-
-    EFI_HANDLE                      ConsoleOutHandle;
-    SIMPLE_TEXT_OUTPUT_INTERFACE    *ConOut;
+typedef
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_PCI_IO_PROTOCOL_CONFIG)(
+    struct _ACPI_EFI_PCI_IO             *This,
+    ACPI_EFI_PCI_IO_PROTOCOL_WIDTH      Width,
+    UINT32                              Offset,
+    UINTN                               Count,
+    VOID                                *Buffer);
 
-    EFI_HANDLE                      StandardErrorHandle;
-    SIMPLE_TEXT_OUTPUT_INTERFACE    *StdErr;
+typedef struct {
+    ACPI_EFI_PCI_IO_PROTOCOL_CONFIG     Read;
+    ACPI_EFI_PCI_IO_PROTOCOL_CONFIG     Write;
+} ACPI_EFI_PCI_IO_PROTOCOL_CONFIG_ACCESS;
+
+typedef
+ACPI_EFI_STATUS
+(ACPI_EFI_API *ACPI_EFI_PCI_IO_PROTOCOL_GET_LOCATION)(
+    struct _ACPI_EFI_PCI_IO             *This,
+    UINTN                               *SegmentNumber,
+    UINTN                               *BusNumber,
+    UINTN                               *DeviceNumber,
+    UINTN                               *FunctionNumber);
 
-#if 0
-    EFI_RUNTIME_SERVICES            *RuntimeServices;
-#else
-    EFI_HANDLE                      *RuntimeServices;
-#endif
-    EFI_BOOT_SERVICES               *BootServices;
-
-    UINTN                           NumberOfTableEntries;
-    EFI_CONFIGURATION_TABLE         *ConfigurationTable;
-
-} EFI_SYSTEM_TABLE;
-
+typedef struct _ACPI_EFI_PCI_IO {
+    ACPI_EFI_UNKNOWN_INTERFACE          PollMem;
+    ACPI_EFI_UNKNOWN_INTERFACE          PollIo;
+    ACPI_EFI_UNKNOWN_INTERFACE          Mem;
+    ACPI_EFI_UNKNOWN_INTERFACE          Io;
+    ACPI_EFI_PCI_IO_PROTOCOL_CONFIG_ACCESS Pci;
+    ACPI_EFI_UNKNOWN_INTERFACE          CopyMem;
+    ACPI_EFI_UNKNOWN_INTERFACE          Map;
+    ACPI_EFI_UNKNOWN_INTERFACE          Unmap;
+    ACPI_EFI_UNKNOWN_INTERFACE          AllocateBuffer;
+    ACPI_EFI_UNKNOWN_INTERFACE          FreeBuffer;
+    ACPI_EFI_UNKNOWN_INTERFACE          Flush;
+    ACPI_EFI_PCI_IO_PROTOCOL_GET_LOCATION GetLocation;
+    ACPI_EFI_UNKNOWN_INTERFACE          Attributes;
+    ACPI_EFI_UNKNOWN_INTERFACE          GetBarAttributes;
+    ACPI_EFI_UNKNOWN_INTERFACE          SetBarAttributes;
+    UINT64                              RomSize;
+    VOID                                *RomImage;
+} ACPI_EFI_PCI_IO;
 
 /* GNU EFI definitions */
 
@@ -834,10 +912,10 @@
 /*
  * EFI specific prototypes
  */
-EFI_STATUS
+ACPI_EFI_STATUS
 efi_main (
-    EFI_HANDLE              Image,
-    EFI_SYSTEM_TABLE        *SystemTab);
+    ACPI_EFI_HANDLE         Image,
+    ACPI_EFI_SYSTEM_TABLE   *SystemTab);
 
 int
 acpi_main (
@@ -847,9 +925,9 @@
 
 #endif
 
-extern EFI_GUID AcpiGbl_LoadedImageProtocol;
-extern EFI_GUID AcpiGbl_TextInProtocol;
-extern EFI_GUID AcpiGbl_TextOutProtocol;
-extern EFI_GUID AcpiGbl_FileSystemProtocol;
+extern ACPI_EFI_GUID AcpiGbl_LoadedImageProtocol;
+extern ACPI_EFI_GUID AcpiGbl_TextInProtocol;
+extern ACPI_EFI_GUID AcpiGbl_TextOutProtocol;
+extern ACPI_EFI_GUID AcpiGbl_FileSystemProtocol;
 
 #endif /* __ACEFIEX_H__ */
--- a/sys/external/bsd/acpica/dist/include/platform/acenv.h	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/include/platform/acenv.h	Fri Nov 11 19:14:16 2016 +0000
@@ -79,6 +79,7 @@
     (defined ACPI_EXAMPLE_APP)
 #define ACPI_APPLICATION
 #define ACPI_SINGLE_THREADED
+#define USE_NATIVE_ALLOCATE_ZEROED
 #endif
 
 /* iASL configuration */
@@ -125,7 +126,6 @@
 
 #ifdef ACPI_DUMP_APP
 #define ACPI_USE_NATIVE_MEMORY_MAPPING
-#define USE_NATIVE_ALLOCATE_ZEROED
 #endif
 
 /* AcpiNames/Example configuration. Hardware disabled */
@@ -150,7 +150,6 @@
 /* Common for all ACPICA applications */
 
 #ifdef ACPI_APPLICATION
-#define ACPI_USE_SYSTEM_CLIBRARY
 #define ACPI_USE_LOCAL_CACHE
 #endif
 
@@ -167,10 +166,21 @@
 /******************************************************************************
  *
  * Host configuration files. The compiler configuration files are included
- * by the host files.
+ * first.
  *
  *****************************************************************************/
 
+#if defined(__GNUC__) && !defined(__INTEL_COMPILER)
+#include "acgcc.h"
+
+#elif defined(_MSC_VER)
+#include "acmsvc.h"
+
+#elif defined(__INTEL_COMPILER)
+#include "acintel.h"
+
+#endif
+
 #if defined(_LINUX) || defined(__linux__)
 #include "aclinux.h"
 
@@ -210,18 +220,20 @@
 #elif defined(__OS2__)
 #include "acos2.h"
 
-#elif defined(_AED_EFI)
-#include "acefi.h"
-
-#elif defined(_GNU_EFI)
-#include "acefi.h"
-
 #elif defined(__HAIKU__)
 #include "achaiku.h"
 
 #elif defined(__QNX__)
 #include "acqnx.h"
 
+/*
+ * EFI applications can be built with -nostdlib, in this case, it must be
+ * included after including all other host environmental definitions, in
+ * order to override the definitions.
+ */
+#elif defined(_AED_EFI) || defined(_GNU_EFI) || defined(_EDK2_EFI)
+#include "acefi.h"
+
 #else
 
 /* Unknown environment */
@@ -330,7 +342,8 @@
  * ACPI_USE_SYSTEM_CLIBRARY - Define this if linking to an actual C library.
  *      Otherwise, local versions of string/memory functions will be used.
  * ACPI_USE_STANDARD_HEADERS - Define this if linking to a C library and
- *      the standard header files may be used.
+ *      the standard header files may be used. Defining this implies that
+ *      ACPI_USE_SYSTEM_CLIBRARY has been defined.
  *
  * The ACPICA subsystem only uses low level C library functions that do not
  * call operating system services and may therefore be inlined in the code.
@@ -338,7 +351,6 @@
  * It may be necessary to tailor these include files to the target
  * generation environment.
  */
-#ifdef ACPI_USE_SYSTEM_CLIBRARY
 
 /* Use the standard C library headers. We want to keep these to a minimum. */
 
@@ -346,57 +358,20 @@
 
 /* Use the standard headers from the standard locations */
 
-#include <stdarg.h>
 #include <stdlib.h>
 #include <string.h>
 #include <ctype.h>
+#ifdef ACPI_APPLICATION
+#include <stdio.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <time.h>
+#include <signal.h>
+#endif
 
 #endif /* ACPI_USE_STANDARD_HEADERS */
 
-/* We will be linking to the standard Clib functions */
-
-#else
-
-/******************************************************************************
- *
- * Not using native C library, use local implementations
- *
- *****************************************************************************/
-
-/*
- * Use local definitions of C library macros and functions. These function
- * implementations may not be as efficient as an inline or assembly code
- * implementation provided by a native C library, but they are functionally
- * equivalent.
- */
-#ifndef va_arg
-
-#ifndef _VALIST
-#define _VALIST
-typedef char *va_list;
-#endif /* _VALIST */
-
-/* Storage alignment properties */
-
-#define  _AUPBND                (sizeof (ACPI_NATIVE_INT) - 1)
-#define  _ADNBND                (sizeof (ACPI_NATIVE_INT) - 1)
-
-/* Variable argument list macro definitions */
-
-#define _Bnd(X, bnd)            (((sizeof (X)) + (bnd)) & (~(bnd)))
-#define va_arg(ap, T)           (*(T *)(((ap) += (_Bnd (T, _AUPBND))) - (_Bnd (T,_ADNBND))))
-#define va_end(ap)              (ap = (va_list) NULL)
-#define va_start(ap, A)         (void) ((ap) = (((char *) &(A)) + (_Bnd (A,_AUPBND))))
-
-#endif /* va_arg */
-
-/* Use the local (ACPICA) definitions of the clib functions */
-
-#endif /* ACPI_USE_SYSTEM_CLIBRARY */
-
-#ifndef ACPI_FILE
 #ifdef ACPI_APPLICATION
-#include <stdio.h>
 #define ACPI_FILE              FILE *
 #define ACPI_FILE_OUT          stdout
 #define ACPI_FILE_ERR          stderr
@@ -405,6 +380,9 @@
 #define ACPI_FILE_OUT          NULL
 #define ACPI_FILE_ERR          NULL
 #endif /* ACPI_APPLICATION */
-#endif /* ACPI_FILE */
+
+#ifndef ACPI_INIT_FUNCTION
+#define ACPI_INIT_FUNCTION
+#endif
 
 #endif /* __ACENV_H__ */
--- a/sys/external/bsd/acpica/dist/include/platform/acenvex.h	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/include/platform/acenvex.h	Fri Nov 11 19:14:16 2016 +0000
@@ -56,17 +56,24 @@
 #if defined(_LINUX) || defined(__linux__)
 #include "aclinuxex.h"
 
-#elif defined(WIN32)
-#include "acwinex.h"
+#elif defined(__DragonFly__)
+#include "acdragonflyex.h"
 
-#elif defined(_AED_EFI)
+/*
+ * EFI applications can be built with -nostdlib, in this case, it must be
+ * included after including all other host environmental definitions, in
+ * order to override the definitions.
+ */
+#elif defined(_AED_EFI) || defined(_GNU_EFI) || defined(_EDK2_EFI)
 #include "acefiex.h"
 
-#elif defined(_GNU_EFI)
-#include "acefiex.h"
+#endif
 
-#elif defined(__DragonFly__)
-#include "acdragonflyex.h"
+#if defined(__GNUC__) && !defined(__INTEL_COMPILER)
+#include "acgccex.h"
+
+#elif defined(_MSC_VER)
+#include "acmsvcex.h"
 
 #endif
 
--- a/sys/external/bsd/acpica/dist/include/platform/acfreebsd.h	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/include/platform/acfreebsd.h	Fri Nov 11 19:14:16 2016 +0000
@@ -45,9 +45,6 @@
 #define __ACFREEBSD_H__
 
 
-/* FreeBSD uses GCC */
-
-#include "acgcc.h"
 #include <sys/types.h>
 
 #ifdef __LP64__
--- a/sys/external/bsd/acpica/dist/include/platform/acgcc.h	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/include/platform/acgcc.h	Fri Nov 11 19:14:16 2016 +0000
@@ -44,6 +44,12 @@
 #ifndef __ACGCC_H__
 #define __ACGCC_H__
 
+/*
+ * Use compiler specific <stdarg.h> is a good practice for even when
+ * -nostdinc is specified (i.e., ACPI_USE_STANDARD_HEADERS undefined.
+ */
+#include <stdarg.h>
+
 #define ACPI_INLINE             __inline__
 
 /* Function name is used for debug output. Non-ANSI, compiler-dependent */
@@ -64,17 +70,6 @@
  */
 #define ACPI_UNUSED_VAR __attribute__ ((unused))
 
-/*
- * Some versions of gcc implement strchr() with a buggy macro. So,
- * undef it here. Prevents error messages of this form (usually from the
- * file getopt.c):
- *
- * error: logical '&&' with non-zero constant will always evaluate as true
- */
-#ifdef strchr
-#undef strchr
-#endif
-
 /* GCC supports __VA_ARGS__ in macros */
 
 #define COMPILER_VA_MACRO               1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/external/bsd/acpica/dist/include/platform/acgccex.h	Fri Nov 11 19:14:16 2016 +0000
@@ -0,0 +1,58 @@
+/******************************************************************************
+ *
+ * Name: acgccex.h - Extra GCC specific defines, etc.
+ *
+ *****************************************************************************/
+
+/*
+ * Copyright (C) 2000 - 2016, Intel Corp.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions, and the following disclaimer,
+ *    without modification.
+ * 2. Redistributions in binary form must reproduce at minimum a disclaimer
+ *    substantially similar to the "NO WARRANTY" disclaimer below
+ *    ("Disclaimer") and any redistribution must be conditioned upon
+ *    including a substantially similar Disclaimer requirement for further
+ *    binary redistribution.
+ * 3. Neither the names of the above-listed copyright holders nor the names
+ *    of any contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ * Alternatively, this software may be distributed under the terms of the
+ * GNU General Public License ("GPL") version 2 as published by the Free
+ * Software Foundation.
+ *
+ * NO WARRANTY
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGES.
+ */
+
+#ifndef __ACGCCEX_H__
+#define __ACGCCEX_H__
+
+/*
+ * Some versions of gcc implement strchr() with a buggy macro. So,
+ * undef it here. Prevents error messages of this form (usually from the
+ * file getopt.c):
+ *
+ * error: logical '&&' with non-zero constant will always evaluate as true
+ */
+#ifdef strchr
+#undef strchr
+#endif
+
+#endif /* __ACGCCEX_H__ */
--- a/sys/external/bsd/acpica/dist/include/platform/achaiku.h	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/include/platform/achaiku.h	Fri Nov 11 19:14:16 2016 +0000
@@ -44,7 +44,9 @@
 #ifndef __ACHAIKU_H__
 #define __ACHAIKU_H__
 
-#include "acgcc.h"
+#define ACPI_USE_STANDARD_HEADERS
+#define ACPI_USE_SYSTEM_CLIBRARY
+
 #include <KernelExport.h>
 
 struct mutex;
@@ -52,9 +54,6 @@
 
 /* Host-dependent types and defines for user- and kernel-space ACPICA */
 
-#define ACPI_USE_SYSTEM_CLIBRARY
-#define ACPI_USE_STANDARD_HEADERS
-
 #define ACPI_MUTEX_TYPE             ACPI_OSL_MUTEX
 #define ACPI_MUTEX                  struct mutex *
 
--- a/sys/external/bsd/acpica/dist/include/platform/acintel.h	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/include/platform/acintel.h	Fri Nov 11 19:14:16 2016 +0000
@@ -44,6 +44,12 @@
 #ifndef __ACINTEL_H__
 #define __ACINTEL_H__
 
+/*
+ * Use compiler specific <stdarg.h> is a good practice for even when
+ * -nostdinc is specified (i.e., ACPI_USE_STANDARD_HEADERS undefined.
+ */
+#include <stdarg.h>
+
 /* Configuration specific to Intel 64-bit C compiler */
 
 #define COMPILER_DEPENDENT_INT64    __int64
--- a/sys/external/bsd/acpica/dist/include/platform/aclinux.h	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/include/platform/aclinux.h	Fri Nov 11 19:14:16 2016 +0000
@@ -89,6 +89,8 @@
 #include <asm/acenv.h>
 #endif
 
+#define ACPI_INIT_FUNCTION __init
+
 #ifndef CONFIG_ACPI
 
 /* External globals for __KERNEL__, stubs is needed */
@@ -173,11 +175,11 @@
 
 #else /* !__KERNEL__ */
 
-#include <stdarg.h>
-#include <string.h>
-#include <stdlib.h>
-#include <ctype.h>
+#define ACPI_USE_STANDARD_HEADERS
+
+#ifdef ACPI_USE_STANDARD_HEADERS
 #include <unistd.h>
+#endif
 
 /* Define/disable kernel-specific declarators */
 
@@ -208,8 +210,4 @@
 
 #endif /* __KERNEL__ */
 
-/* Linux uses GCC */
-
-#include "acgcc.h"
-
 #endif /* __ACLINUX_H__ */
--- a/sys/external/bsd/acpica/dist/include/platform/aclinuxex.h	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/include/platform/aclinuxex.h	Fri Nov 11 19:14:16 2016 +0000
@@ -71,7 +71,7 @@
 /*
  * Overrides for in-kernel ACPICA
  */
-ACPI_STATUS __init AcpiOsInitialize (
+ACPI_STATUS ACPI_INIT_FUNCTION AcpiOsInitialize (
     void);
 
 ACPI_STATUS AcpiOsTerminate (
--- a/sys/external/bsd/acpica/dist/include/platform/acmacosx.h	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/include/platform/acmacosx.h	Fri Nov 11 19:14:16 2016 +0000
@@ -47,7 +47,6 @@
 #include "aclinux.h"
 
 #ifdef __APPLE__
-#define sem_destroy         sem_close
 #define ACPI_USE_ALTERNATE_TIMEOUT
 #endif /* __APPLE__ */
 
--- a/sys/external/bsd/acpica/dist/include/platform/acmsvc.h	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/include/platform/acmsvc.h	Fri Nov 11 19:14:16 2016 +0000
@@ -64,6 +64,10 @@
 #define stat            _stat
 #define fstat           _fstat
 #define mkdir           _mkdir
+#define snprintf        _snprintf
+#if _MSC_VER <= 1200 /* Versions below VC++ 6 */
+#define vsnprintf       _vsnprintf
+#endif
 #define O_RDONLY        _O_RDONLY
 #define O_BINARY        _O_BINARY
 #define O_CREAT         _O_CREAT
@@ -102,6 +106,10 @@
 #define ACPI_INTERNAL_XFACE
 #define ACPI_INTERNAL_VAR_XFACE     __cdecl
 
+
+/* Do not maintain the architecture specific stuffs for the EFI ports */
+
+#if !defined(_EDK2_EFI) && !defined(_GNU_EFI)
 #ifndef _LINT
 /*
  * Math helper functions
@@ -136,6 +144,7 @@
     n_lo >>= 1;    \
 }
 #endif
+#endif
 
 /* warn C4100: unreferenced formal parameter */
 #pragma warning(disable:4100)
@@ -192,4 +201,15 @@
 #else
 #endif
 
+/* Begin standard headers */
+
+/*
+ * warn C4001: nonstandard extension 'single line comment' was used
+ *
+ * We need to enable this for ACPICA internal files, but disable it for
+ * buggy MS runtime headers.
+ */
+#pragma warning(push)
+#pragma warning(disable:4001)
+
 #endif /* __ACMSVC_H__ */
--- a/sys/external/bsd/acpica/dist/include/platform/acmsvcex.h	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/include/platform/acmsvcex.h	Fri Nov 11 19:14:16 2016 +0000
@@ -44,6 +44,14 @@
 #ifndef __ACMSVCEX_H__
 #define __ACMSVCEX_H__
 
+/* va_arg implementation can be compiler specific */
+
+#ifdef ACPI_USE_STANDARD_HEADERS
+
+#include <stdarg.h>
+
+#endif /* ACPI_USE_STANDARD_HEADERS */
+
 /* Debug support. */
 
 #ifdef _DEBUG
@@ -51,4 +59,39 @@
 #include <crtdbg.h>
 #endif
 
+/* End standard headers */
+
+#pragma warning(pop)
+
+#ifndef ACPI_USE_SYSTEM_CLIBRARY
+
+/******************************************************************************
+ *
+ * Not using native C library, use local implementations
+ *
+ *****************************************************************************/
+
+#ifndef va_arg
+
+#ifndef _VALIST
+#define _VALIST
+typedef char *va_list;
+#endif /* _VALIST */
+
+/* Storage alignment properties */
+
+#define  _AUPBND                (sizeof (ACPI_NATIVE_INT) - 1)
+#define  _ADNBND                (sizeof (ACPI_NATIVE_INT) - 1)
+
+/* Variable argument list macro definitions */
+
+#define _Bnd(X, bnd)            (((sizeof (X)) + (bnd)) & (~(bnd)))
+#define va_arg(ap, T)           (*(T *)(((ap) += (_Bnd (T, _AUPBND))) - (_Bnd (T,_ADNBND))))
+#define va_end(ap)              (ap = (va_list) NULL)
+#define va_start(ap, A)         (void) ((ap) = (((char *) &(A)) + (_Bnd (A,_AUPBND))))
+
+#endif /* va_arg */
+
+#endif /* !ACPI_USE_SYSTEM_CLIBRARY */
+
 #endif /* __ACMSVCEX_H__ */
--- a/sys/external/bsd/acpica/dist/include/platform/acos2.h	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/include/platform/acos2.h	Fri Nov 11 19:14:16 2016 +0000
@@ -43,6 +43,10 @@
 
 #ifndef __ACOS2_H__
 #define __ACOS2_H__
+
+#define ACPI_USE_STANDARD_HEADERS
+#define ACPI_USE_SYSTEM_CLIBRARY
+
 #define INCL_LONGLONG
 #include <os2.h>
 
@@ -66,7 +70,6 @@
  */
 #define ACPI_UNUSED_VAR
 
-#define ACPI_USE_STANDARD_HEADERS
 #include <io.h>
 
 #define ACPI_FLUSH_CPU_CACHE() Wbinvd()
--- a/sys/external/bsd/acpica/dist/include/platform/acqnx.h	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/include/platform/acqnx.h	Fri Nov 11 19:14:16 2016 +0000
@@ -44,9 +44,8 @@
 #ifndef __ACQNX_H__
 #define __ACQNX_H__
 
-/* QNX uses GCC */
-
-#include "acgcc.h"
+#define ACPI_USE_STANDARD_HEADERS
+#define ACPI_USE_SYSTEM_CLIBRARY
 
 #define ACPI_UINTPTR_T          uintptr_t
 #define ACPI_USE_LOCAL_CACHE
@@ -62,13 +61,10 @@
 #include <stdint.h>
 #include <sys/neutrino.h>
 
-#define ACPI_USE_STANDARD_HEADERS
-
 #define __cli() InterruptDisable();
 #define __sti() InterruptEnable();
 #define __cdecl
 
-#define ACPI_USE_SYSTEM_CLIBRARY
 #define ACPI_USE_NATIVE_DIVIDE
 
 #endif /* __ACQNX_H__ */
--- a/sys/external/bsd/acpica/dist/include/platform/acwin.h	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/include/platform/acwin.h	Fri Nov 11 19:14:16 2016 +0000
@@ -44,18 +44,11 @@
 #ifndef __ACWIN_H__
 #define __ACWIN_H__
 
-/*! [Begin] no source code translation (Keep the include) */
-
-/* Windows uses VC */
-#ifdef _MSC_VER
-#include "acmsvc.h"
-#endif
-/*! [End] no source code translation !*/
+#define ACPI_USE_STANDARD_HEADERS
+#define ACPI_USE_SYSTEM_CLIBRARY
 
 #define ACPI_MACHINE_WIDTH      32
 
-#define ACPI_USE_STANDARD_HEADERS
-
 #ifdef ACPI_DEFINE_ALTERNATE_TYPES
 /*
  * Types used only in (Linux) translated source, defined here to enable
--- a/sys/external/bsd/acpica/dist/include/platform/acwin64.h	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/include/platform/acwin64.h	Fri Nov 11 19:14:16 2016 +0000
@@ -44,15 +44,11 @@
 #ifndef __ACWIN64_H__
 #define __ACWIN64_H__
 
-/*! [Begin] no source code translation (Keep the include) */
-
-#include "acintel.h"
-/*! [End] no source code translation !*/
+#define ACPI_USE_STANDARD_HEADERS
+#define ACPI_USE_SYSTEM_CLIBRARY
 
 #define ACPI_MACHINE_WIDTH          64
 
-#define ACPI_USE_STANDARD_HEADERS
-
 /*
  * Handle platform- and compiler-specific assembly language differences.
  *
--- a/sys/external/bsd/acpica/dist/namespace/nsconvert.c	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/namespace/nsconvert.c	Fri Nov 11 19:14:16 2016 +0000
@@ -84,7 +84,7 @@
         /* String-to-Integer conversion */
 
         Status = AcpiUtStrtoul64 (OriginalObject->String.Pointer,
-            ACPI_ANY_BASE, AcpiGbl_IntegerByteWidth, &Value);
+            AcpiGbl_IntegerByteWidth, &Value);
         if (ACPI_FAILURE (Status))
         {
             return (Status);
--- a/sys/external/bsd/acpica/dist/namespace/nsload.c	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/namespace/nsload.c	Fri Nov 11 19:14:16 2016 +0000
@@ -46,6 +46,7 @@
 #include "acnamesp.h"
 #include "acdispat.h"
 #include "actables.h"
+#include "acinterp.h"
 
 
 #define _COMPONENT          ACPI_NAMESPACE
@@ -89,21 +90,6 @@
     ACPI_FUNCTION_TRACE (NsLoadTable);
 
 
-    /*
-     * Parse the table and load the namespace with all named
-     * objects found within. Control methods are NOT parsed
-     * at this time. In fact, the control methods cannot be
-     * parsed until the entire namespace is loaded, because
-     * if a control method makes a forward reference (call)
-     * to another control method, we can't continue parsing
-     * because we don't know how many arguments to parse next!
-     */
-    Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE);
-    if (ACPI_FAILURE (Status))
-    {
-        return_ACPI_STATUS (Status);
-    }
-
     /* If table already loaded into namespace, just return */
 
     if (AcpiTbIsTableLoaded (TableIndex))
@@ -121,6 +107,15 @@
         goto Unlock;
     }
 
+    /*
+     * Parse the table and load the namespace with all named
+     * objects found within. Control methods are NOT parsed
+     * at this time. In fact, the control methods cannot be
+     * parsed until the entire namespace is loaded, because
+     * if a control method makes a forward reference (call)
+     * to another control method, we can't continue parsing
+     * because we don't know how many arguments to parse next!
+     */
     Status = AcpiNsParseTable (TableIndex, Node);
     if (ACPI_SUCCESS (Status))
     {
@@ -137,7 +132,6 @@
          * exist. This target of Scope must already exist in the
          * namespace, as per the ACPI specification.
          */
-        (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE);
         AcpiNsDeleteNamespaceByOwner (
             AcpiGbl_RootTableList.Tables[TableIndex].OwnerId);
 
@@ -146,8 +140,6 @@
     }
 
 Unlock:
-    (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE);
-
     if (ACPI_FAILURE (Status))
     {
         return_ACPI_STATUS (Status);
@@ -180,7 +172,7 @@
      * other ACPI implementations. Optionally, the execution can be deferred
      * until later, see AcpiInitializeObjects.
      */
-    if (!AcpiGbl_GroupModuleLevelCode)
+    if (!AcpiGbl_ParseTableAsTermList && !AcpiGbl_GroupModuleLevelCode)
     {
         AcpiNsExecModuleCodeList ();
     }
--- a/sys/external/bsd/acpica/dist/namespace/nsparse.c	Fri Nov 11 17:10:04 2016 +0000
+++ b/sys/external/bsd/acpica/dist/namespace/nsparse.c	Fri Nov 11 19:14:16 2016 +0000
@@ -47,6 +47,7 @@
 #include "acparser.h"
 #include "acdispat.h"
 #include "actables.h"
+#include "acinterp.h"
 
 
 #define _COMPONENT          ACPI_NAMESPACE
@@ -55,6 +56,109 @@
 
 /*******************************************************************************
  *
+ * FUNCTION:    NsExecuteTable
+ *
+ * PARAMETERS:  TableDesc       - An ACPI table descriptor for table to parse
+ *              StartNode       - Where to enter the table into the namespace
+ *
+ * RETURN:      Status
+ *
+ * DESCRIPTION: Load ACPI/AML table by executing the entire table as a
+ *              TermList.
+ *
+ ******************************************************************************/
+
+ACPI_STATUS
+AcpiNsExecuteTable (
+    UINT32                  TableIndex,
+    ACPI_NAMESPACE_NODE     *StartNode)
+{
+    ACPI_STATUS             Status;
+    ACPI_TABLE_HEADER       *Table;
+    ACPI_OWNER_ID           OwnerId;
+    ACPI_EVALUATE_INFO      *Info = NULL;
+    UINT32                  AmlLength;
+    UINT8                   *AmlStart;
+    ACPI_OPERAND_OBJECT     *MethodObj = NULL;
+
+
+    ACPI_FUNCTION_TRACE (NsExecuteTable);
+
+
+    Status = AcpiGetTableByIndex (TableIndex, &Table);
+    if (ACPI_FAILURE (Status))
+    {
+        return_ACPI_STATUS (Status);
+    }
+
+    /* Table must consist of at least a complete header */
+
+    if (Table->Length < sizeof (ACPI_TABLE_HEADER))
+    {
+        return_ACPI_STATUS (AE_BAD_HEADER);
+    }
+
+    AmlStart = (UINT8 *) Table + sizeof (ACPI_TABLE_HEADER);
+    AmlLength = Table->Length - sizeof (ACPI_TABLE_HEADER);
+
+    Status = AcpiTbGetOwnerId (TableIndex, &OwnerId);
+    if (ACPI_FAILURE (Status))
+    {
+        return_ACPI_STATUS (Status);
+    }
+
+    /* Create, initialize, and link a new temporary method object */
+
+    MethodObj = AcpiUtCreateInternalObject (ACPI_TYPE_METHOD);
+    if (!MethodObj)
+    {
+        return_ACPI_STATUS (AE_NO_MEMORY);
+    }
+
+    /* Allocate the evaluation information block */
+
+    Info = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_EVALUATE_INFO));
+    if (!Info)
+    {
+        Status = AE_NO_MEMORY;
+        goto Cleanup;
+    }
+
+    ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
+        "Create table code block: %p\n", MethodObj));
+
+    MethodObj->Method.AmlStart = AmlStart;
+    MethodObj->Method.AmlLength = AmlLength;
+    MethodObj->Method.OwnerId = OwnerId;
+    MethodObj->Method.InfoFlags |= ACPI_METHOD_MODULE_LEVEL;
+
+    Info->PassNumber = ACPI_IMODE_EXECUTE;
+    Info->Node = StartNode;
+    Info->ObjDesc = MethodObj;
+    Info->NodeFlags = Info->Node->Flags;
+    Info->FullPathname = AcpiNsGetNormalizedPathname (Info->Node, TRUE);
+    if (!Info->FullPathname)
+    {
+        Status = AE_NO_MEMORY;
+        goto Cleanup;
+    }
+
+    Status = AcpiPsExecuteTable (Info);
+
+Cleanup:
+    if (Info)
+    {
+        ACPI_FREE (Info->FullPathname);
+        Info->FullPathname = NULL;
+    }
+    ACPI_FREE (Info);
+    AcpiUtRemoveReference (MethodObj);
+    return_ACPI_STATUS (Status);
+}
+
+
+/*******************************************************************************
+ *
  * FUNCTION:    NsOneCompleteParse
  *
  * PARAMETERS:  PassNumber              - 1 or 2
@@ -156,7 +260,9 @@
 
     ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
         "*PARSE* pass %u parse\n", PassNumber));
+    AcpiExEnterInterpreter ();
     Status = AcpiPsParseAml (WalkState);
+    AcpiExExitInterpreter ();
 
 Cleanup:
     AcpiPsDeleteParseTree (ParseRoot);
@@ -188,40 +294,53 @@
     ACPI_FUNCTION_TRACE (NsParseTable);
 
 
-    /*
-     * AML Parse, pass 1
-     *
-     * In this pass, we load most of the namespace. Control methods
-     * are not parsed until later. A parse tree is not created. Instead,
-     * each Parser Op subtree is deleted when it is finished. This saves
-     * a great deal of memory, and allows a small cache of parse objects
-     * to service the entire parse. The second pass of the parse then
-     * performs another complete parse of the AML.
-     */
-    ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "**** Start pass 1\n"));
+    if (AcpiGbl_ParseTableAsTermList)
+    {
+        ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "**** Start load pass\n"));
 
-    Status = AcpiNsOneCompleteParse (ACPI_IMODE_LOAD_PASS1,
-        TableIndex, StartNode);
-    if (ACPI_FAILURE (Status))
+        Status = AcpiNsExecuteTable (TableIndex, StartNode);
+        if (ACPI_FAILURE (Status))
+        {
+            return_ACPI_STATUS (Status);
+        }
+    }
+    else
     {
-        return_ACPI_STATUS (Status);
-    }
+        /*
+         * AML Parse, pass 1
+         *
+         * In this pass, we load most of the namespace. Control methods
+         * are not parsed until later. A parse tree is not created.
+         * Instead, each Parser Op subtree is deleted when it is finished.
+         * This saves a great deal of memory, and allows a small cache of
+         * parse objects to service the entire parse. The second pass of
+         * the parse then performs another complete parse of the AML.
+         */
+        ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "**** Start pass 1\n"));
 
-    /*
-     * AML Par