---------------------------------------- trunk
authorchristos <christos@NetBSD.org>
Sat, 25 Oct 2014 20:57:55 +0000
branchtrunk
changeset 231105 8269c5c355ca
parent 231104 2ee0f115f655
child 231106 fb97e6d17029
---------------------------------------- 26 September 2014. Summary of changes for version 20140926: 1) ACPICA kernel-resident subsystem: Updated the GPIO operation region handler interface (GeneralPurposeIo). In order to support GPIO Connection objects with multiple pins, along with the related Field objects, the following changes to the interface have been made: The Address is now defined to be the offset in bits of the field unit from the previous invocation of a Connection. It can be viewed as a "Pin Number Index" into the connection resource descriptor. The BitWidth is the exact bit width of the field. It is usually one bit, but not always. See the ACPICA reference guide (section 8.8.6.2.1) for additional information and examples. GPE support: During ACPICA/GPE initialization, ensure that all GPEs with corresponding _Lxx/_Exx methods are disabled (they may have been enabled by the firmware), so that they cannot fire until they are enabled via AcpiUpdateAllGpes. Rafael J. Wysocki. Added a new return flag for the Event/GPE status interfaces -- AcpiGetEventStatus and AcpiGetGpeStatus. The new ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or GPE currently has a handler associated with it, and can thus actually affect the system. 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: 99.1K Code, 27.3K Data, 126.4K Total Debug Version: 192.8K Code, 79.9K Data, 272.7K Total Previous Release: Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 2) iASL Compiler/Disassembler and Tools: iASL: Fixed a memory allocation/free regression introduced in 20140828 that could cause the compiler to crash. This was introduced inadvertently during the effort to eliminate compiler memory leaks. ACPICA BZ 1111, 1113. iASL: Removed two error messages that have been found to create false positives, until they can be fixed and fully validated (ACPICA BZ 1112): 1) Illegal forward reference within a method 2) Illegal reference across two methods iASL: Implemented a new option (-lm) to create a hardware mapping file that summarizes all GPIO, I2C, SPI, and UART connections. This option works for both the compiler and disassembler. See the iASL compiler user guide for additional information and examples (section 6.4.6). AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to version 2. This corrects the AE_BAD_HEADER exception seen on systems with a version 1 RSDP. Lv Zheng ACPICA BZ 1097. AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode unless STDIN is actually a terminal. Assists with batch-mode processing. ACPICA BZ 1114. Disassembler/AcpiHelp: Added another large group of recognized _HID values. ---------------------------------------- 28 August 2014. Summary of changes for version 20140828: 1) ACPICA kernel-resident subsystem: Fixed a problem related to the internal use of the Timer() operator where a 64-bit divide could cause an attempted link to a double-precision math library. This divide is not actually necessary, so the code was restructured to eliminate it. Lv Zheng. ACPI 5.1: Added support for the runtime validation of the _DSD package (similar to the iASL support). ACPI 5.1/Headers: Added support for the GICC affinity subtable to the SRAT table. Hanjun Guo <hanjun.guo@linaro.org>. 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: 98.8K Code, 27.3K Data, 126.1K Total Debug Version: 192.1K Code, 79.8K Data, 271.9K Total Previous Release: Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 2) iASL Compiler/Disassembler and Tools: AcpiExec: Fixed a problem on unix systems where the original terminal state was not always properly restored upon exit. Seen when using the -v option. ACPICA BZ 1104. iASL: Fixed a problem with the validation of the ranges/length within the Memory24 resource descriptor. There was a boundary condition when the range was equal to the (length -1) caused by the fact that these values are defined in 256-byte blocks, not bytes. ACPICA BZ 1098 Disassembler: Fixed a problem with the GpioInt descriptor interrupt polarity flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword is now supported properly. ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported in the disassembler, data table compiler, and table template generator. iASL: Added a requirement for Device() objects that one of either a _HID or _ADR must exist within the scope of a Device, as per the ACPI specification. Remove a similar requirement that was incorrectly in place for the _DSD object. iASL: Added error detection for illegal named references within control methods that would cause runtime failures. Now trapped as errors are: 1) References to objects within a non-parent control method. 2) Forward references (within a method) -- for control methods, AML interpreters use a one-pass parse of control methods. ACPICA BZ 1008. iASL: Added error checking for dependencies related to the _PSx power methods. ACPICA BZ 1029. 1) For _PS0, one of these must exist within the same scope: _PS1, _PS2, _PS3. 2) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same scope. iASL and table compiler: Cleanup miscellaneous memory leaks by fully deploying the existing object and string caches and adding new caches for the table compiler. iASL: Split the huge parser source file into multiple subfiles to improve manageability. Generation now requires the M4 macro preprocessor, which is part of the Bison distribution on both unix and windows platforms. AcpiSrc: Fixed and removed all extraneous warnings generated during entire ACPICA source code scan and/or conversion. ---------------------------------------- 24 July 2014. Summary of changes for version 20140724: The ACPI 5.1 specification has been released and is available at: http://uefi.org/specs/access 0) ACPI 5.1 support in ACPICA: ACPI 5.1 is fully supported in ACPICA as of this release. New predefined names. Support includes iASL and runtime ACPICA validation. _CCA (Cache Coherency Attribute). _DSD (Device-Specific Data). David Box. Modifications to existing ACPI tables. Support includes headers, iASL Data Table compiler, disassembler, and the template generator. FADT - New fields and flags. Graeme Gregory. GTDT - One new subtable and new fields. Tomasz Nowicki. MADT - Two new subtables. Tomasz Nowicki. PCCT - One new subtable. Miscellaneous. New notification type for System Resource Affinity change events. 1) ACPICA kernel-resident subsystem: Fixed a regression introduced in 20140627 where a fault can happen during the deletion of Alias AML namespace objects. The problem affected both the core ACPICA and the ACPICA tools including iASL and AcpiExec. Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a simple mechanism to enable wake GPEs that have no associated handler or control method. Rafael Wysocki. Updated the AcpiEnableGpe interface to disallow the enable if there is no handler or control method associated with the particular GPE. This will help avoid meaningless GPEs and even GPE floods. Rafael Wysocki. Updated GPE handling and dispatch by disabling the GPE before clearing the status bit for edge-triggered GPEs. Lv Zheng. Added Timer() support to the AML Debug object. The current timer value is now displayed with each invocation of (Store to) the debug object to enable simple generation of execution times for AML code (method execution for example.) ACPICA BZ 1093. 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: 98.7K Code, 27.3K Data, 126.0K Total Debug Version: 192.0K Code, 79.7K Data, 271.7K Total Previous Release: Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 2) iASL Compiler/Disassembler and Tools: Fixed an issue with the recently added local printf implementation, concerning width/precision specifiers that could cause incorrect output. Lv Zheng. ACPICA BZ 1094. Disassembler: Added support to detect buffers that contain UUIDs and disassemble them to an invocation of the ToUUID operator. Also emit commented descriptions of known ACPI-related UUIDs. AcpiHelp: Added support to display known ACPI-related UUIDs. New option, -u. Adds three new files. iASL: Update table compiler and disassembler for DMAR table changes that were introduced in September 2013. With assistance by David Woodhouse. ---------------------------------------- 27 June 2014. Summary of changes for version 20140627: 1) ACPICA kernel-resident subsystem: Formatted Output: Implemented local versions of standard formatted output utilities such as printf, etc. Over time, it has been discovered that there are in fact many portability issues with printf, and the addition of this feature will fix/prevent these issues once and for all. Some known issues are summarized below: 1) Output of 64-bit values is not portable. For example, UINT64 is %ull for the Linux kernel and is %uI64 for some MSVC versions. 2) Invoking printf consistently in a manner that is portable across both 32-bit and 64-bit platforms is difficult at best in many situations. 3) The output format for pointers varies from system to system (leading zeros especially), and leads to inconsistent output from ACPICA across platforms. 4) Certain platform-specific printf formats may conflict with ACPICA use. 5) If there is no local C library available, ACPICA now has local support for printf. -- To address these printf issues in a complete manner, ACPICA now directly implements a small subset of printf format specifiers, only those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng. Implemented support for ACPICA generation within the EFI environment. Initially, the AcpiDump utility is supported in the UEFI shell environment. Lv Zheng. Added a new external interface, AcpiLogError, to improve ACPICA portability. This allows the host to redirect error messages from the ACPICA utilities. Lv Zheng. Added and deployed new OSL file I/O interfaces to improve ACPICA portability: AcpiOsOpenFile AcpiOsCloseFile AcpiOsReadFile AcpiOsWriteFile AcpiOsGetFileOffset AcpiOsSetFileOffset There are C library implementations of these functions in the new file service_layers/oslibcfs.c -- however, the functions can be implemented by the local host in any way necessary. Lv Zheng. Implemented a mechanism to disable/enable ACPI table checksum validation at runtime. This can be useful when loading tables very early during OS initialization when it may not be possible to map the entire table in order to compute the checksum. Lv Zheng. Fixed a buffer allocation issue for the Generic Serial Bus support. Originally, a fixed buffer length was used. This change allows for variable-length buffers based upon the protocol indicated by the field access attributes. Reported by Lan Tianyu. Lv Zheng. Fixed a problem where an object detached from a namespace node was not properly terminated/cleared and could cause a circular list problem if reattached. ACPICA BZ 1063. David Box. Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick. Fixed a possible memory leak in an error return path within the function AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King. 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: 98.7K Code, 27.2K Data, 125.9K Total Debug Version: 191.7K Code, 79.6K Data, 271.3K Total Previous Release: Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 2) iASL Compiler/Disassembler and Tools: Disassembler: Add dump of ASCII equivalent text within a comment at the end of each line of the output for the Buffer() ASL operator. AcpiDump: Miscellaneous changes: Fixed repetitive table dump in -n mode. For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if the ACPI 2.0 GUID fails. iASL: Fixed a problem where the compiler could fault if incorrectly given an acpidump output file as input. ACPICA BZ 1088. David Box. AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if they are invoked without any arguments. Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ 1086. Colin Ian King. Disassembler: Cleaned up a block of code that extracts a parent Op object. Added a comment that explains that the parent is guaranteed to be valid in this case. ACPICA BZ 1069. ---------------------------------------- 24 April 2014. Summary of changes for version 20140424: 1) ACPICA kernel-resident subsystem: Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. Some of these tables are known to contain a trailing NULL entry. Lv Zheng. Removed an extraneous error message for the case where there are a large number of system GPEs (> 124). This was the "32-bit FADT register is too long to convert to GAS struct" message, which is irrelevant for GPEs since the GPEx_BLK_LEN fields of the FADT are always used instead of the (limited capacity) GAS bit length. Also, several changes to ensure proper support for GPE numbers > 255, where some "GPE number" fields were 8-bits internally. Implemented and deployed additional configuration support for the public ACPICA external interfaces. Entire classes of interfaces can now be easily modified or configured out, replaced by stubbed inline functions by default. Lv Zheng. Moved all public ACPICA runtime configuration globals to the public ACPICA external interface file for convenience. Also, removed some obsolete/unused globals. See the file acpixf.h. Lv Zheng. Documentation: Added a new section to the ACPICA reference describing the maximum number of GPEs that can be supported by the FADT-defined GPEs in block zero and one. About 1200 total. See section 4.4.1 of the ACPICA reference. 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: 96.8K Code, 27.2K Data, 124.0K Total Debug Version: 189.5K Code, 79.7K Data, 269.2K Total Previous Release: Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 2) iASL Compiler/Disassembler and Tools: iASL and disassembler: Add full support for the LPIT table (Low Power Idle Table). Includes support in the disassembler, data table compiler, and template generator. AcpiDump utility: 1) Add option to force the use of the RSDT (over the XSDT). 2) Improve validation of the RSDP signature (use 8 chars instead of 4). iASL: Add check for predefined packages that are too large. For predefined names that contain subpackages, check if each subpackage is too large. (Check for too small already exists.) Debugger: Updated the GPE command (which simulates a GPE by executing the GPE code paths in ACPICA). The GPE device is now optional, and defaults to the GPE 0/1 FADT-defined blocks. Unix application OSL: Update line-editing support. Add additional error checking and take care not to reset terminal attributes on exit if they were never set. This should help guarantee that the terminal is always left in the previous state on program exit. ---------------------------------------- 25 March 2014. Summary of changes for version 20140325: 1) ACPICA kernel-resident subsystem: Updated the auto-serialize feature for control methods. This feature automatically serializes all methods that create named objects in order to prevent runtime errors. The update adds support to ignore the currently executing AML SyncLevel when invoking such a method, in order to prevent disruption of any existing SyncLevel priorities that may exist in the AML code. Although the use of SyncLevels is relatively rare, this change fixes a regression where an AE_AML_MUTEX_ORDER exception can appear on some machines starting with the 20140214 release. Added a new external interface to allow the host to install ACPI tables very early, before the namespace is even created. AcpiInstallTable gives the host additional flexibility for ACPI table management. Tables can be installed directly by the host as if they had originally appeared in the XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables (anything except the DSDT and FACS). Adds a new file, tbdata.c, along with additional internal restructuring and cleanup. See the ACPICA Reference for interface details. Lv Zheng. Added validation of the checksum for all incoming dynamically loaded tables (via external interfaces or via AML Load/LoadTable operators). Lv Zheng. Updated the use of the AcpiOsWaitEventsComplete interface during Notify and GPE handler removal. Restructured calls to eliminate possible race conditions. Lv Zheng. Added a warning for the use/execution of the ASL/AML Unload (table) operator. This will help detect and identify machines that use this operator if and when it is ever used. This operator has never been seen in the field and the usage model and possible side-effects of the drastic runtime action of a full table removal are unknown. Reverted the use of #pragma push/pop which was introduced in the 20140214 release. It appears that push and pop are not implemented by enough compilers to make the use of this feature feasible for ACPICA at this time. However, these operators may be deployed in a future ACPICA release. Added the missing EXPORT_SYMBOL macros for the install and remove SCI handler interfaces. Source code generation: 1) Disabled the use of the "strchr" macro for the gcc-specific generation. For some versions of gcc, this macro can periodically expose a compiler bug which in turn causes compile-time error(s). 2) Added support for PPC64 compilation. Colin Ian King. 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: 97.0K Code, 27.2K Data, 124.2K Total Debug Version: 189.7K Code, 79.5K Data, 269.2K Total Previous Release: Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 2) iASL Compiler/Disassembler and Tools: Disassembler: Added several new features to improve the readability of the resulting ASL code. Extra information is emitted within comment fields in the ASL code: 1) Known _HID/_CID values are decoded to descriptive text. 2) Standard values for the Notify() operator are decoded to descriptive text. 3) Target operands are expanded to full pathnames (in a comment) when possible. Disassembler: Miscellaneous updates for extern() handling: 1) Abort compiler if file specified by -fe option does not exist. 2) Silence unnecessary warnings about argument count mismatches. 3) Update warning messages concerning unresolved method externals. 4) Emit "UnknownObj" keyword for externals whose type cannot be determined. AcpiHelp utility: 1) Added the -a option to display both the ASL syntax and the AML encoding for an input ASL operator. This effectively displays all known information about an ASL operator with one AcpiHelp invocation. 2) Added substring match support (similar to a wildcard) for the -i (_HID/PNP IDs) option. iASL/Disassembler: Since this tool does not yet support execution on big- endian machines, added detection of endianness and an error message if execution is attempted on big-endian. Support for big-endian within iASL is a feature that is on the ACPICA to-be-done list. AcpiBin utility: 1) Remove option to extract binary files from an acpidump; this function is made obsolete by the AcpiXtract utility. 2) General cleanup of open files and allocated buffers. ---------------------------------------- 14 February 2014. Summary of changes for version 20140214: 1) ACPICA kernel-resident subsystem: Implemented a new mechanism to proactively prevent problems with ill- behaved reentrant control methods that create named ACPI objects. This behavior is illegal as per the ACPI specification, but is nonetheless frequently seen in the field. Previously, this could lead to an AE_ALREADY_EXISTS exception if the method was actually entered by more than one thread. This new mechanism detects such methods at table load time and marks them "serialized" to prevent reentrancy. A new global option, AcpiGbl_AutoSerializeMethods, has been added to disable this feature if desired. This mechanism and global option obsoletes and supersedes the previous AcpiGbl_SerializeAllMethods option. Added the "Windows 2013" string to the _OSI support. ACPICA will now respond TRUE to _OSI queries with this string. It is the stated policy of ACPICA to add new strings to the _OSI support as soon as possible after they are defined. See the full ACPICA _OSI policy which has been added to the utilities/utosi.c file. Hardened/updated the _PRT return value auto-repair code: 1) Do not abort the repair on a single subpackage failure, continue to check all subpackages. 2) Add check for the minimum subpackage length (4). 3) Properly handle extraneous NULL package elements. Added support to avoid the possibility of infinite loops when traversing object linked lists. Never allow an infinite loop, even in the face of corrupted object lists. ACPICA headers: Deployed the use of #pragma pack(push) and #pragma pack(pop) directives to ensure that the ACPICA headers are independent of compiler settings or other host headers. 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: 96.5K Code, 27.2K Data, 123.7K Total Debug Version: 188.6K Code, 79.0K Data, 267.6K Total Previous Release: Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 2) iASL Compiler/Disassembler and Tools: iASL/Table-compiler: Fixed a problem with support for the SPMI table. The first reserved field was incorrectly forced to have a value of zero. This change correctly forces the field to have a value of one. ACPICA BZ 1081. Debugger: Added missing support for the "Extra" and "Data" subobjects when displaying object data. Debugger: Added support to display entire object linked lists when displaying object data. iASL: Removed the obsolete -g option to obtain ACPI tables from the Windows registry. This feature has been superseded by the acpidump utility. ---------------------------------------- 14 January 2014. Summary of changes for version 20140114: 1) ACPICA kernel-resident subsystem: Updated all ACPICA copyrights and signons to 2014. Added the 2014 copyright to all module headers and signons, including the standard Linux header. This affects virtually every file in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and the test suites. Improved parameter validation for AcpiInstallGpeBlock. Added the following checks: 1) The incoming device handle refers to type ACPI_TYPE_DEVICE. 2) There is not already a GPE block attached to the device. Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a device. Correctly support "references" in the ACPI_OBJECT. This change fixes the support to allow references (namespace nodes) to be passed as arguments to control methods via the evaluate object interface. This is probably most useful for testing purposes, however. Improved support for 32/64 bit physical addresses in printf()-like output. This change improves the support for physical addresses in printf debug statements and other output on both 32-bit and 64-bit hosts. It consistently outputs the appropriate number of bytes for each host. The %p specifier is unsatisfactory since it does not emit uniform output on all hosts/clib implementations (on some, leading zeros are not supported, leading to difficult-to-read output). 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: 96.2K Code, 27.0K Data, 123.2K Total Debug Version: 187.5K Code, 78.3K Data, 265.8K Total Previous Release: Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 2) iASL Compiler/Disassembler and Tools: iASL: Fix a possible fault when using the Connection() operator. Fixes a problem if the parent Field definition for the Connection operator refers to an operation region that does not exist. ACPICA BZ 1064. AcpiExec: Load of local test tables is now optional. The utility has the capability to load some various tables to test features of ACPICA. However, there are enough of them that the output of the utility became confusing. With this change, only the required local tables are displayed (RSDP, XSDT, etc.) along with the actual tables loaded via the command line specification. This makes the default output simler and easier to understand. The -el command line option restores the original behavior for testing purposes. AcpiExec: Added support for overlapping operation regions. This change expands the simulation of operation regions by supporting regions that overlap within the given address space. Supports SystemMemory and SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031. AcpiExec: Added region handler support for PCI_Config and EC spaces. This allows AcpiExec to simulate these address spaces, similar to the current support for SystemMemory and SystemIO. Debugger: Added new command to read/write/compare all namespace objects. The command "test objects" will exercise the entire namespace by writing new values to each data object, and ensuring that the write was successful. The original value is then restored and verified. Debugger: Added the "test predefined" command. This change makes this test public and puts it under the new "test" command. The test executes each and every predefined name within the current namespace.
sys/external/bsd/acpica/dist/Makefile
sys/external/bsd/acpica/dist/changes.txt
sys/external/bsd/acpica/dist/common/acgetline.c
sys/external/bsd/acpica/dist/common/adfile.c
sys/external/bsd/acpica/dist/common/adisasm.c
sys/external/bsd/acpica/dist/common/adwalk.c
sys/external/bsd/acpica/dist/common/ahids.c
sys/external/bsd/acpica/dist/common/ahpredef.c
sys/external/bsd/acpica/dist/common/ahuuids.c
sys/external/bsd/acpica/dist/common/cmfsize.c
sys/external/bsd/acpica/dist/common/dmextern.c
sys/external/bsd/acpica/dist/common/dmrestag.c
sys/external/bsd/acpica/dist/common/dmtable.c
sys/external/bsd/acpica/dist/common/dmtbdump.c
sys/external/bsd/acpica/dist/common/getopt.c
sys/external/bsd/acpica/dist/compiler/aslascii.c
sys/external/bsd/acpica/dist/compiler/aslbtypes.c
sys/external/bsd/acpica/dist/compiler/aslcodegen.c
sys/external/bsd/acpica/dist/compiler/aslcompiler.h
sys/external/bsd/acpica/dist/compiler/asldefine.h
sys/external/bsd/acpica/dist/compiler/aslfold.c
sys/external/bsd/acpica/dist/compiler/aslglobal.h
sys/external/bsd/acpica/dist/compiler/aslhex.c
sys/external/bsd/acpica/dist/compiler/asllength.c
sys/external/bsd/acpica/dist/compiler/asllisting.c
sys/external/bsd/acpica/dist/compiler/asllistsup.c
sys/external/bsd/acpica/dist/compiler/aslmain.c
sys/external/bsd/acpica/dist/compiler/aslmap.c
sys/external/bsd/acpica/dist/compiler/aslmapenter.c
sys/external/bsd/acpica/dist/compiler/aslmapoutput.c
sys/external/bsd/acpica/dist/compiler/aslmaputils.c
sys/external/bsd/acpica/dist/compiler/aslmessages.c
sys/external/bsd/acpica/dist/compiler/aslmessages.h
sys/external/bsd/acpica/dist/compiler/aslmethod.c
sys/external/bsd/acpica/dist/compiler/aslnamesp.c
sys/external/bsd/acpica/dist/compiler/asloffset.c
sys/external/bsd/acpica/dist/compiler/aslopcodes.c
sys/external/bsd/acpica/dist/compiler/asloperands.c
sys/external/bsd/acpica/dist/compiler/aslopt.c
sys/external/bsd/acpica/dist/compiler/asloptions.c
sys/external/bsd/acpica/dist/compiler/aslparser.y
sys/external/bsd/acpica/dist/compiler/aslresource.c
sys/external/bsd/acpica/dist/compiler/aslrestype1.c
sys/external/bsd/acpica/dist/compiler/aslrestype1i.c
sys/external/bsd/acpica/dist/compiler/aslrestype2.c
sys/external/bsd/acpica/dist/compiler/aslrestype2d.c
sys/external/bsd/acpica/dist/compiler/aslrestype2e.c
sys/external/bsd/acpica/dist/compiler/aslrestype2q.c
sys/external/bsd/acpica/dist/compiler/aslrestype2s.c
sys/external/bsd/acpica/dist/compiler/aslrestype2w.c
sys/external/bsd/acpica/dist/compiler/aslrules.y
sys/external/bsd/acpica/dist/compiler/aslstartup.c
sys/external/bsd/acpica/dist/compiler/aslstubs.c
sys/external/bsd/acpica/dist/compiler/aslsupport.y
sys/external/bsd/acpica/dist/compiler/asltokens.y
sys/external/bsd/acpica/dist/compiler/asltransform.c
sys/external/bsd/acpica/dist/compiler/asltypes.h
sys/external/bsd/acpica/dist/compiler/asltypes.y
sys/external/bsd/acpica/dist/compiler/asluuid.c
sys/external/bsd/acpica/dist/compiler/dtcompiler.h
sys/external/bsd/acpica/dist/compiler/dtexpress.c
sys/external/bsd/acpica/dist/compiler/dtio.c
sys/external/bsd/acpica/dist/compiler/dtparser.l
sys/external/bsd/acpica/dist/compiler/dttemplate.c
sys/external/bsd/acpica/dist/compiler/dttemplate.h
sys/external/bsd/acpica/dist/compiler/preprocess.h
sys/external/bsd/acpica/dist/compiler/prexpress.c
sys/external/bsd/acpica/dist/compiler/prmacros.c
sys/external/bsd/acpica/dist/compiler/prparser.l
sys/external/bsd/acpica/dist/compiler/prscan.c
sys/external/bsd/acpica/dist/debugger/dbconvert.c
sys/external/bsd/acpica/dist/debugger/dbfileio.c
sys/external/bsd/acpica/dist/debugger/dbhistry.c
sys/external/bsd/acpica/dist/debugger/dbstats.c
sys/external/bsd/acpica/dist/debugger/dbtest.c
sys/external/bsd/acpica/dist/debugger/dbxface.c
sys/external/bsd/acpica/dist/disassembler/dmbuffer.c
sys/external/bsd/acpica/dist/disassembler/dmdeferred.c
sys/external/bsd/acpica/dist/disassembler/dmnames.c
sys/external/bsd/acpica/dist/disassembler/dmobject.c
sys/external/bsd/acpica/dist/disassembler/dmopcode.c
sys/external/bsd/acpica/dist/disassembler/dmresrcl2.c
sys/external/bsd/acpica/dist/disassembler/dmresrcs.c
sys/external/bsd/acpica/dist/disassembler/dmutils.c
sys/external/bsd/acpica/dist/disassembler/dmwalk.c
sys/external/bsd/acpica/dist/dispatcher/dsargs.c
sys/external/bsd/acpica/dist/dispatcher/dsfield.c
sys/external/bsd/acpica/dist/dispatcher/dsinit.c
sys/external/bsd/acpica/dist/dispatcher/dsmethod.c
sys/external/bsd/acpica/dist/dispatcher/dsmthdat.c
sys/external/bsd/acpica/dist/dispatcher/dsobject.c
sys/external/bsd/acpica/dist/dispatcher/dsutils.c
sys/external/bsd/acpica/dist/dispatcher/dswexec.c
sys/external/bsd/acpica/dist/dispatcher/dswload.c
sys/external/bsd/acpica/dist/dispatcher/dswload2.c
sys/external/bsd/acpica/dist/dispatcher/dswscope.c
sys/external/bsd/acpica/dist/dispatcher/dswstate.c
sys/external/bsd/acpica/dist/events/evevent.c
sys/external/bsd/acpica/dist/events/evglock.c
sys/external/bsd/acpica/dist/events/evgpe.c
sys/external/bsd/acpica/dist/events/evgpeblk.c
sys/external/bsd/acpica/dist/events/evgpeinit.c
sys/external/bsd/acpica/dist/events/evgpeutil.c
sys/external/bsd/acpica/dist/events/evhandler.c
sys/external/bsd/acpica/dist/events/evmisc.c
sys/external/bsd/acpica/dist/events/evregion.c
sys/external/bsd/acpica/dist/events/evsci.c
sys/external/bsd/acpica/dist/events/evxfevnt.c
sys/external/bsd/acpica/dist/events/evxfgpe.c
sys/external/bsd/acpica/dist/events/evxfregn.c
sys/external/bsd/acpica/dist/executer/exconvrt.c
sys/external/bsd/acpica/dist/executer/excreate.c
sys/external/bsd/acpica/dist/executer/exfield.c
sys/external/bsd/acpica/dist/executer/exfldio.c
sys/external/bsd/acpica/dist/executer/exmisc.c
sys/external/bsd/acpica/dist/executer/exmutex.c
sys/external/bsd/acpica/dist/executer/exnames.c
sys/external/bsd/acpica/dist/executer/exoparg1.c
sys/external/bsd/acpica/dist/executer/exoparg2.c
sys/external/bsd/acpica/dist/executer/exoparg3.c
sys/external/bsd/acpica/dist/executer/exoparg6.c
sys/external/bsd/acpica/dist/executer/exprep.c
sys/external/bsd/acpica/dist/executer/exregion.c
sys/external/bsd/acpica/dist/executer/exresnte.c
sys/external/bsd/acpica/dist/executer/exresolv.c
sys/external/bsd/acpica/dist/executer/exresop.c
sys/external/bsd/acpica/dist/executer/exstore.c
sys/external/bsd/acpica/dist/executer/exstoren.c
sys/external/bsd/acpica/dist/executer/exstorob.c
sys/external/bsd/acpica/dist/executer/exsystem.c
sys/external/bsd/acpica/dist/executer/exutils.c
sys/external/bsd/acpica/dist/generate/release/build.sh
sys/external/bsd/acpica/dist/generate/unix/Makefile.config
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/hwacpi.c
sys/external/bsd/acpica/dist/hardware/hwgpe.c
sys/external/bsd/acpica/dist/hardware/hwpci.c
sys/external/bsd/acpica/dist/hardware/hwregs.c
sys/external/bsd/acpica/dist/hardware/hwtimer.c
sys/external/bsd/acpica/dist/hardware/hwvalid.c
sys/external/bsd/acpica/dist/hardware/hwxface.c
sys/external/bsd/acpica/dist/include/acbuffer.h
sys/external/bsd/acpica/dist/include/accommon.h
sys/external/bsd/acpica/dist/include/acconfig.h
sys/external/bsd/acpica/dist/include/acdispat.h
sys/external/bsd/acpica/dist/include/acevents.h
sys/external/bsd/acpica/dist/include/achware.h
sys/external/bsd/acpica/dist/include/acnames.h
sys/external/bsd/acpica/dist/include/acobject.h
sys/external/bsd/acpica/dist/include/acopcode.h
sys/external/bsd/acpica/dist/include/acoutput.h
sys/external/bsd/acpica/dist/include/acparser.h
sys/external/bsd/acpica/dist/include/acpi.h
sys/external/bsd/acpica/dist/include/acpredef.h
sys/external/bsd/acpica/dist/include/acrestyp.h
sys/external/bsd/acpica/dist/include/acstruct.h
sys/external/bsd/acpica/dist/include/actbl.h
sys/external/bsd/acpica/dist/include/actbl2.h
sys/external/bsd/acpica/dist/include/actbl3.h
sys/external/bsd/acpica/dist/include/amlcode.h
sys/external/bsd/acpica/dist/include/amlresrc.h
sys/external/bsd/acpica/dist/include/platform/accygwin.h
sys/external/bsd/acpica/dist/include/platform/acefi.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/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/acos2.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/nsalloc.c
sys/external/bsd/acpica/dist/namespace/nsarguments.c
sys/external/bsd/acpica/dist/namespace/nsconvert.c
sys/external/bsd/acpica/dist/namespace/nsdumpdv.c
sys/external/bsd/acpica/dist/namespace/nsload.c
sys/external/bsd/acpica/dist/namespace/nsnames.c
sys/external/bsd/acpica/dist/namespace/nsobject.c
sys/external/bsd/acpica/dist/namespace/nsparse.c
sys/external/bsd/acpica/dist/namespace/nspredef.c
sys/external/bsd/acpica/dist/namespace/nsprepkg.c
sys/external/bsd/acpica/dist/namespace/nsrepair.c
sys/external/bsd/acpica/dist/namespace/nssearch.c
sys/external/bsd/acpica/dist/namespace/nsutils.c
sys/external/bsd/acpica/dist/namespace/nswalk.c
sys/external/bsd/acpica/dist/namespace/nsxfobj.c
sys/external/bsd/acpica/dist/os_specific/service_layers/osefitbl.c
sys/external/bsd/acpica/dist/os_specific/service_layers/osefixf.c
sys/external/bsd/acpica/dist/os_specific/service_layers/osfreebsdtbl.c
sys/external/bsd/acpica/dist/os_specific/service_layers/oslibcfs.c
sys/external/bsd/acpica/dist/os_specific/service_layers/osunixdir.c
sys/external/bsd/acpica/dist/os_specific/service_layers/osunixmap.c
sys/external/bsd/acpica/dist/os_specific/service_layers/osunixxf.c
sys/external/bsd/acpica/dist/os_specific/service_layers/oswindir.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/psargs.c
sys/external/bsd/acpica/dist/parser/psloop.c
sys/external/bsd/acpica/dist/parser/psobject.c
sys/external/bsd/acpica/dist/parser/psparse.c
sys/external/bsd/acpica/dist/parser/psscope.c
sys/external/bsd/acpica/dist/parser/pstree.c
sys/external/bsd/acpica/dist/parser/psutils.c
sys/external/bsd/acpica/dist/parser/pswalk.c
sys/external/bsd/acpica/dist/parser/psxface.c
sys/external/bsd/acpica/dist/resources/rsaddr.c
sys/external/bsd/acpica/dist/resources/rscalc.c
sys/external/bsd/acpica/dist/resources/rscreate.c
sys/external/bsd/acpica/dist/resources/rsinfo.c
sys/external/bsd/acpica/dist/resources/rsio.c
sys/external/bsd/acpica/dist/resources/rsirq.c
sys/external/bsd/acpica/dist/resources/rslist.c
sys/external/bsd/acpica/dist/resources/rsmemory.c
sys/external/bsd/acpica/dist/resources/rsmisc.c
sys/external/bsd/acpica/dist/resources/rsserial.c
sys/external/bsd/acpica/dist/tables/tbdata.c
sys/external/bsd/acpica/dist/tables/tbfind.c
sys/external/bsd/acpica/dist/tables/tbprint.c
sys/external/bsd/acpica/dist/tables/tbxfload.c
sys/external/bsd/acpica/dist/tests/misc/grammar.asl
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/aemain.c
sys/external/bsd/acpica/dist/tools/acpiexec/aeregion.c
sys/external/bsd/acpica/dist/tools/acpiexec/aetables.c
sys/external/bsd/acpica/dist/tools/acpiexec/aetables.h
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/ahaslkey.c
sys/external/bsd/acpica/dist/tools/acpihelp/ahaslops.c
sys/external/bsd/acpica/dist/tools/acpihelp/ahdecode.c
sys/external/bsd/acpica/dist/tools/acpihelp/ahmain.c
sys/external/bsd/acpica/dist/tools/acpinames/acpinames.h
sys/external/bsd/acpica/dist/tools/acpinames/anmain.c
sys/external/bsd/acpica/dist/tools/acpinames/anstubs.c
sys/external/bsd/acpica/dist/tools/acpinames/antables.c
sys/external/bsd/acpica/dist/tools/acpisrc/acpisrc.h
sys/external/bsd/acpica/dist/tools/acpisrc/ascase.c
sys/external/bsd/acpica/dist/tools/acpisrc/asconvrt.c
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/asremove.c
sys/external/bsd/acpica/dist/tools/acpisrc/astable.c
sys/external/bsd/acpica/dist/tools/acpisrc/asutils.c
sys/external/bsd/acpica/dist/tools/acpixtract/axmain.c
sys/external/bsd/acpica/dist/tools/examples/examples.c
sys/external/bsd/acpica/dist/tools/examples/examples.h
sys/external/bsd/acpica/dist/tools/examples/exstubs.c
sys/external/bsd/acpica/dist/tools/examples/extables.c
sys/external/bsd/acpica/dist/utilities/utaddress.c
sys/external/bsd/acpica/dist/utilities/utalloc.c
sys/external/bsd/acpica/dist/utilities/utbuffer.c
sys/external/bsd/acpica/dist/utilities/utclib.c
sys/external/bsd/acpica/dist/utilities/utcopy.c
sys/external/bsd/acpica/dist/utilities/utdelete.c
sys/external/bsd/acpica/dist/utilities/uterror.c
sys/external/bsd/acpica/dist/utilities/utexcep.c
sys/external/bsd/acpica/dist/utilities/utfileio.c
sys/external/bsd/acpica/dist/utilities/uthex.c
sys/external/bsd/acpica/dist/utilities/utids.c
sys/external/bsd/acpica/dist/utilities/utinit.c
sys/external/bsd/acpica/dist/utilities/utlock.c
sys/external/bsd/acpica/dist/utilities/utmath.c
sys/external/bsd/acpica/dist/utilities/utobject.c
sys/external/bsd/acpica/dist/utilities/utownerid.c
sys/external/bsd/acpica/dist/utilities/utpredef.c
sys/external/bsd/acpica/dist/utilities/utprint.c
sys/external/bsd/acpica/dist/utilities/utresrc.c
sys/external/bsd/acpica/dist/utilities/utstate.c
sys/external/bsd/acpica/dist/utilities/utstring.c
sys/external/bsd/acpica/dist/utilities/utuuid.c
sys/external/bsd/acpica/dist/utilities/utxface.c
sys/external/bsd/acpica/dist/utilities/utxferror.c
sys/external/bsd/acpica/dist/utilities/utxfinit.c
sys/external/bsd/acpica/dist/utilities/utxfmutex.c
--- a/sys/external/bsd/acpica/dist/Makefile	Sat Oct 25 19:08:48 2014 +0000
+++ b/sys/external/bsd/acpica/dist/Makefile	Sat Oct 25 20:57:55 2014 +0000
@@ -10,7 +10,13 @@
 # code directories. This prevents collisions between different
 # compilations of the same source file with different compile options.
 #
-BUILD_DIRECTORY_PATH = "generate/unix"
 
-include generate/unix/Makefile.config
-include generate/unix/Makefile.common
+ifeq ($(OS),efi)
+	BUILD_DIRECTORY_PATH = "generate/efi"
+	include generate/efi/Makefile.config
+	include generate/efi/Makefile.common
+else
+	BUILD_DIRECTORY_PATH = "generate/unix"
+	include generate/unix/Makefile.config
+	include generate/unix/Makefile.common
+endif
--- a/sys/external/bsd/acpica/dist/changes.txt	Sat Oct 25 19:08:48 2014 +0000
+++ b/sys/external/bsd/acpica/dist/changes.txt	Sat Oct 25 20:57:55 2014 +0000
@@ -1,4 +1,637 @@
 ----------------------------------------
+26 September 2014. Summary of changes for version 20140926:
+
+1) ACPICA kernel-resident subsystem:
+
+Updated the GPIO operation region handler interface (GeneralPurposeIo). 
+In order to support GPIO Connection objects with multiple pins, along 
+with the related Field objects, the following changes to the interface 
+have been made: The Address is now defined to be the offset in bits of 
+the field unit from the previous invocation of a Connection. It can be 
+viewed as a "Pin Number Index" into the connection resource descriptor. 
+The BitWidth is the exact bit width of the field. It is usually one bit, 
+but not always. See the ACPICA reference guide (section 8.8.6.2.1) for 
+additional information and examples.
+
+GPE support: During ACPICA/GPE initialization, ensure that all GPEs with 
+corresponding _Lxx/_Exx methods are disabled (they may have been enabled 
+by the firmware), so that they cannot fire until they are enabled via 
+AcpiUpdateAllGpes. Rafael J. Wysocki.
+
+Added a new return flag for the Event/GPE status interfaces -- 
+AcpiGetEventStatus and AcpiGetGpeStatus. The new 
+ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or 
+GPE currently has a handler associated with it, and can thus actually 
+affect the system. 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:  99.1K Code, 27.3K Data, 126.4K Total
+    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
+  Previous Release:
+    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
+    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
+
+2) iASL Compiler/Disassembler and Tools:
+
+iASL: Fixed a memory allocation/free regression introduced in 20140828 
+that could cause the compiler to crash. This was introduced inadvertently 
+during the effort to eliminate compiler memory leaks. ACPICA BZ 1111, 
+1113.
+
+iASL: Removed two error messages that have been found to create false 
+positives, until they can be fixed and fully validated (ACPICA BZ 1112):
+1) Illegal forward reference within a method
+2) Illegal reference across two methods
+
+iASL: Implemented a new option (-lm) to create a hardware mapping file 
+that summarizes all GPIO, I2C, SPI, and UART connections. This option 
+works for both the compiler and disassembler. See the iASL compiler user 
+guide for additional information and examples (section 6.4.6).
+
+AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to 
+version 2. This corrects the AE_BAD_HEADER exception seen on systems with 
+a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
+
+AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode 
+unless STDIN is actually a terminal. Assists with batch-mode processing. 
+ACPICA BZ 1114.
+
+Disassembler/AcpiHelp: Added another large group of recognized _HID 
+values.
+
+
+----------------------------------------
+28 August 2014. Summary of changes for version 20140828:
+
+1) ACPICA kernel-resident subsystem:
+
+Fixed a problem related to the internal use of the Timer() operator where 
+a 64-bit divide could cause an attempted link to a double-precision math 
+library. This divide is not actually necessary, so the code was 
+restructured to eliminate it. Lv Zheng.
+
+ACPI 5.1: Added support for the runtime validation of the _DSD package 
+(similar to the iASL support).
+
+ACPI 5.1/Headers: Added support for the GICC affinity subtable to the 
+SRAT table. Hanjun Guo <hanjun.guo@linaro.org>.
+
+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:  98.8K Code, 27.3K Data, 126.1K Total
+    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
+  Previous Release:
+    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total1
+    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
+
+2) iASL Compiler/Disassembler and Tools:
+
+AcpiExec: Fixed a problem on unix systems where the original terminal 
+state was not always properly restored upon exit. Seen when using the -v 
+option. ACPICA BZ 1104.
+
+iASL: Fixed a problem with the validation of the ranges/length within the 
+Memory24 resource descriptor. There was a boundary condition when the 
+range was equal to the (length -1) caused by the fact that these values 
+are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
+
+Disassembler: Fixed a problem with the GpioInt descriptor interrupt 
+polarity 
+flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword 
+is 
+now supported properly.
+
+ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported 
+in the disassembler, data table compiler, and table template generator.
+
+iASL: Added a requirement for Device() objects that one of either a _HID 
+or _ADR must exist within the scope of a Device, as per the ACPI 
+specification. Remove a similar requirement that was incorrectly in place 
+for the _DSD object.
+
+iASL: Added error detection for illegal named references within control 
+methods that would cause runtime failures. Now trapped as errors are: 1) 
+References to objects within a non-parent control method. 2) Forward 
+references (within a method) -- for control methods, AML interpreters use 
+a one-pass parse of control methods. ACPICA BZ 1008.
+
+iASL: Added error checking for dependencies related to the _PSx power 
+methods. ACPICA BZ 1029.
+1) For _PS0, one of these must exist within the same scope: _PS1, _PS2, 
+_PS3.
+2) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same 
+scope.
+
+iASL and table compiler: Cleanup miscellaneous memory leaks by fully 
+deploying the existing object and string caches and adding new caches for 
+the table compiler.
+
+iASL: Split the huge parser source file into multiple subfiles to improve 
+manageability. Generation now requires the M4 macro preprocessor, which 
+is part of the Bison distribution on both unix and windows platforms.
+
+AcpiSrc: Fixed and removed all extraneous warnings generated during 
+entire ACPICA source code scan and/or conversion.
+
+
+----------------------------------------
+
+24 July 2014. Summary of changes for version 20140724: 
+
+The ACPI 5.1 specification has been released and is available at: 
+http://uefi.org/specs/access
+
+
+0) ACPI 5.1 support in ACPICA:
+
+ACPI 5.1 is fully supported in ACPICA as of this release.
+
+New predefined names. Support includes iASL and runtime ACPICA 
+validation.
+    _CCA (Cache Coherency Attribute).
+    _DSD (Device-Specific Data). David Box.
+
+Modifications to existing ACPI tables. Support includes headers, iASL 
+Data Table compiler, disassembler, and the template generator.
+    FADT - New fields and flags. Graeme Gregory.
+    GTDT - One new subtable and new fields. Tomasz Nowicki.
+    MADT - Two new subtables. Tomasz Nowicki.
+    PCCT - One new subtable.
+
+Miscellaneous.
+    New notification type for System Resource Affinity change events.
+
+
+1) ACPICA kernel-resident subsystem:
+
+Fixed a regression introduced in 20140627 where a fault can happen during 
+the deletion of Alias AML namespace objects. The problem affected both 
+the core ACPICA and the ACPICA tools including iASL and AcpiExec.
+
+Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a 
+simple mechanism to enable wake GPEs that have no associated handler or 
+control method. Rafael Wysocki.
+
+Updated the AcpiEnableGpe interface to disallow the enable if there is no 
+handler or control method associated with the particular GPE. This will 
+help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
+
+Updated GPE handling and dispatch by disabling the GPE before clearing 
+the status bit for edge-triggered GPEs. Lv Zheng.
+
+Added Timer() support to the AML Debug object. The current timer value is 
+now displayed with each invocation of (Store to) the debug object to 
+enable simple generation of execution times for AML code (method 
+execution for example.) ACPICA BZ 1093.
+
+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:  98.7K Code, 27.3K Data, 126.0K Total
+    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
+  Previous Release:
+    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
+    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
+
+
+2) iASL Compiler/Disassembler and Tools:
+
+Fixed an issue with the recently added local printf implementation, 
+concerning width/precision specifiers that could cause incorrect output. 
+Lv Zheng. ACPICA BZ 1094.
+
+Disassembler: Added support to detect buffers that contain UUIDs and 
+disassemble them to an invocation of the ToUUID operator. Also emit 
+commented descriptions of known ACPI-related UUIDs.
+
+AcpiHelp: Added support to display known ACPI-related UUIDs. New option, 
+-u. Adds three new files. 
+
+iASL: Update table compiler and disassembler for DMAR table changes that 
+were introduced in September 2013. With assistance by David Woodhouse.
+
+----------------------------------------
+27 June 2014. Summary of changes for version 20140627:
+
+1) ACPICA kernel-resident subsystem:
+
+Formatted Output: Implemented local versions of standard formatted output 
+utilities such as printf, etc. Over time, it has been discovered that 
+there are in fact many portability issues with printf, and the addition 
+of this feature will fix/prevent these issues once and for all. Some 
+known issues are summarized below:
+
+1) Output of 64-bit values is not portable. For example, UINT64 is %ull 
+for the Linux kernel and is %uI64 for some MSVC versions.
+2) Invoking printf consistently in a manner that is portable across both 
+32-bit and 64-bit platforms is difficult at best in many situations.
+3) The output format for pointers varies from system to system (leading 
+zeros especially), and leads to inconsistent output from ACPICA across 
+platforms.
+4) Certain platform-specific printf formats may conflict with ACPICA use.
+5) If there is no local C library available, ACPICA now has local support 
+for printf.
+
+-- To address these printf issues in a complete manner, ACPICA now 
+directly implements a small subset of printf format specifiers, only 
+those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
+
+Implemented support for ACPICA generation within the EFI environment. 
+Initially, the AcpiDump utility is supported in the UEFI shell 
+environment. Lv Zheng.
+
+Added a new external interface, AcpiLogError, to improve ACPICA 
+portability. This allows the host to redirect error messages from the 
+ACPICA utilities. Lv Zheng.
+
+Added and deployed new OSL file I/O interfaces to improve ACPICA 
+portability:
+  AcpiOsOpenFile
+  AcpiOsCloseFile
+  AcpiOsReadFile
+  AcpiOsWriteFile
+  AcpiOsGetFileOffset
+  AcpiOsSetFileOffset
+There are C library implementations of these functions in the new file 
+service_layers/oslibcfs.c -- however, the functions can be implemented by 
+the local host in any way necessary. Lv Zheng.
+
+Implemented a mechanism to disable/enable ACPI table checksum validation 
+at runtime. This can be useful when loading tables very early during OS 
+initialization when it may not be possible to map the entire table in 
+order to compute the checksum. Lv Zheng.
+
+Fixed a buffer allocation issue for the Generic Serial Bus support. 
+Originally, a fixed buffer length was used. This change allows for 
+variable-length buffers based upon the protocol indicated by the field 
+access attributes. Reported by Lan Tianyu. Lv Zheng.
+
+Fixed a problem where an object detached from a namespace node was not 
+properly terminated/cleared and could cause a circular list problem if 
+reattached. ACPICA BZ 1063. David Box.
+
+Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
+
+Fixed a possible memory leak in an error return path within the function 
+AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
+
+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:  98.7K Code, 27.2K Data, 125.9K Total
+    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
+  Previous Release:
+    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
+    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
+
+
+2) iASL Compiler/Disassembler and Tools:
+
+Disassembler: Add dump of ASCII equivalent text within a comment at the 
+end of each line of the output for the Buffer() ASL operator.
+
+AcpiDump: Miscellaneous changes:
+  Fixed repetitive table dump in -n mode.
+  For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if 
+the ACPI 2.0 GUID fails.
+
+iASL: Fixed a problem where the compiler could fault if incorrectly given 
+an acpidump output file as input. ACPICA BZ 1088. David Box.
+
+AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if 
+they are invoked without any arguments.
+
+Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ 
+1086. Colin Ian King.
+
+Disassembler: Cleaned up a block of code that extracts a parent Op 
+object. Added a comment that explains that the parent is guaranteed to be 
+valid in this case. ACPICA BZ 1069.
+
+----------------------------------------
+24 April 2014. Summary of changes for version 20140424:
+
+1) ACPICA kernel-resident subsystem:
+
+Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. 
+Some of these tables are known to contain a trailing NULL entry. Lv 
+Zheng.
+
+Removed an extraneous error message for the case where there are a large 
+number of system GPEs (> 124). This was the "32-bit FADT register is too 
+long to convert to GAS struct" message, which is irrelevant for GPEs 
+since the GPEx_BLK_LEN fields of the FADT are always used instead of the 
+(limited capacity) GAS bit length. Also, several changes to ensure proper 
+support for GPE numbers > 255, where some "GPE number" fields were 8-bits 
+internally.
+
+Implemented and deployed additional configuration support for the public 
+ACPICA external interfaces. Entire classes of interfaces can now be 
+easily modified or configured out, replaced by stubbed inline functions 
+by default. Lv Zheng.
+
+Moved all public ACPICA runtime configuration globals to the public 
+ACPICA external interface file for convenience. Also, removed some 
+obsolete/unused globals. See the file acpixf.h. Lv Zheng.
+
+Documentation: Added a new section to the ACPICA reference describing the 
+maximum number of GPEs that can be supported by the FADT-defined GPEs in 
+block zero and one. About 1200 total. See section 4.4.1 of the ACPICA 
+reference.
+
+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:  96.8K Code, 27.2K Data, 124.0K Total
+    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
+  Previous Release:
+    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
+    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
+
+
+2) iASL Compiler/Disassembler and Tools:
+
+iASL and disassembler: Add full support for the LPIT table (Low Power 
+Idle Table). Includes support in the disassembler, data table compiler, 
+and template generator.
+
+AcpiDump utility:
+1) Add option to force the use of the RSDT (over the XSDT).
+2) Improve validation of the RSDP signature (use 8 chars instead of 4).
+
+iASL: Add check for predefined packages that are too large.  For 
+predefined names that contain subpackages, check if each subpackage is 
+too large. (Check for too small already exists.)
+
+Debugger: Updated the GPE command (which simulates a GPE by executing the 
+GPE code paths in ACPICA). The GPE device is now optional, and defaults 
+to the GPE 0/1 FADT-defined blocks.
+
+Unix application OSL: Update line-editing support. Add additional error 
+checking and take care not to reset terminal attributes on exit if they 
+were never set. This should help guarantee that the terminal is always 
+left in the previous state on program exit.
+
+----------------------------------------
+25 March 2014. Summary of changes for version 20140325:
+
+1) ACPICA kernel-resident subsystem:
+
+Updated the auto-serialize feature for control methods. This feature 
+automatically serializes all methods that create named objects in order 
+to prevent runtime errors. The update adds support to ignore the 
+currently executing AML SyncLevel when invoking such a method, in order 
+to prevent disruption of any existing SyncLevel priorities that may exist 
+in the AML code. Although the use of SyncLevels is relatively rare, this 
+change fixes a regression where an AE_AML_MUTEX_ORDER exception can 
+appear on some machines starting with the 20140214 release.
+
+Added a new external interface to allow the host to install ACPI tables 
+very early, before the namespace is even created. AcpiInstallTable gives 
+the host additional flexibility for ACPI table management. Tables can be 
+installed directly by the host as if they had originally appeared in the 
+XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables 
+(anything except the DSDT and FACS). Adds a new file, tbdata.c, along 
+with additional internal restructuring and cleanup. See the ACPICA 
+Reference for interface details. Lv Zheng.
+
+Added validation of the checksum for all incoming dynamically loaded 
+tables (via external interfaces or via AML Load/LoadTable operators). Lv 
+Zheng.
+
+Updated the use of the AcpiOsWaitEventsComplete interface during Notify 
+and GPE handler removal. Restructured calls to eliminate possible race 
+conditions. Lv Zheng.
+
+Added a warning for the use/execution of the ASL/AML Unload (table) 
+operator. This will help detect and identify machines that use this 
+operator if and when it is ever used. This operator has never been seen 
+in the field and the usage model and possible side-effects of the drastic 
+runtime action of a full table removal are unknown.
+
+Reverted the use of #pragma push/pop which was introduced in the 20140214 
+release. It appears that push and pop are not implemented by enough 
+compilers to make the use of this feature feasible for ACPICA at this 
+time. However, these operators may be deployed in a future ACPICA 
+release.
+
+Added the missing EXPORT_SYMBOL macros for the install and remove SCI 
+handler interfaces.
+
+Source code generation:
+1) Disabled the use of the "strchr" macro for the gcc-specific 
+generation. For some versions of gcc, this macro can periodically expose 
+a compiler bug which in turn causes compile-time error(s).
+2) Added support for PPC64 compilation. Colin Ian King.
+
+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:  97.0K Code, 27.2K Data, 124.2K Total
+    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
+  Previous Release:
+    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
+    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
+
+
+2) iASL Compiler/Disassembler and Tools:
+
+Disassembler: Added several new features to improve the readability of 
+the resulting ASL code. Extra information is emitted within comment 
+fields in the ASL code:
+1) Known _HID/_CID values are decoded to descriptive text.
+2) Standard values for the Notify() operator are decoded to descriptive 
+text.
+3) Target operands are expanded to full pathnames (in a comment) when 
+possible.
+
+Disassembler: Miscellaneous updates for extern() handling:
+1) Abort compiler if file specified by -fe option does not exist.
+2) Silence unnecessary warnings about argument count mismatches.
+3) Update warning messages concerning unresolved method externals.
+4) Emit "UnknownObj" keyword for externals whose type cannot be 
+determined.
+
+AcpiHelp utility:
+1) Added the -a option to display both the ASL syntax and the AML 
+encoding for an input ASL operator. This effectively displays all known 
+information about an ASL operator with one AcpiHelp invocation.
+2) Added substring match support (similar to a wildcard) for the -i 
+(_HID/PNP IDs) option.
+
+iASL/Disassembler: Since this tool does not yet support execution on big-
+endian machines, added detection of endianness and an error message if 
+execution is attempted on big-endian. Support for big-endian within iASL 
+is a feature that is on the ACPICA to-be-done list.
+
+AcpiBin utility:
+1) Remove option to extract binary files from an acpidump; this function 
+is made obsolete by the AcpiXtract utility.
+2) General cleanup of open files and allocated buffers.
+
+----------------------------------------
+14 February 2014. Summary of changes for version 20140214:
+
+1) ACPICA kernel-resident subsystem:
+
+Implemented a new mechanism to proactively prevent problems with ill-
+behaved reentrant control methods that create named ACPI objects. This 
+behavior is illegal as per the ACPI specification, but is nonetheless 
+frequently seen in the field. Previously, this could lead to an 
+AE_ALREADY_EXISTS exception if the method was actually entered by more 
+than one thread. This new mechanism detects such methods at table load 
+time and marks them "serialized" to prevent reentrancy. A new global 
+option, AcpiGbl_AutoSerializeMethods, has been added to disable this 
+feature if desired. This mechanism and global option obsoletes and 
+supersedes the previous AcpiGbl_SerializeAllMethods option.
+
+Added the "Windows 2013" string to the _OSI support. ACPICA will now 
+respond TRUE to _OSI queries with this string. It is the stated policy of 
+ACPICA to add new strings to the _OSI support as soon as possible after 
+they are defined. See the full ACPICA _OSI policy which has been added to 
+the utilities/utosi.c file.
+
+Hardened/updated the _PRT return value auto-repair code:
+1) Do not abort the repair on a single subpackage failure, continue to 
+check all subpackages.
+2) Add check for the minimum subpackage length (4).
+3) Properly handle extraneous NULL package elements.
+
+Added support to avoid the possibility of infinite loops when traversing 
+object linked lists. Never allow an infinite loop, even in the face of 
+corrupted object lists.
+
+ACPICA headers: Deployed the use of #pragma pack(push) and #pragma 
+pack(pop) directives to ensure that the ACPICA headers are independent of 
+compiler settings or other host headers.
+
+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:  96.5K Code, 27.2K Data, 123.7K Total
+    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
+  Previous Release:
+    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
+    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
+
+
+2) iASL Compiler/Disassembler and Tools:
+
+iASL/Table-compiler: Fixed a problem with support for the SPMI table. The 
+first reserved field was incorrectly forced to have a value of zero. This 
+change correctly forces the field to have a value of one. ACPICA BZ 1081.
+
+Debugger: Added missing support for the "Extra" and "Data" subobjects 
+when displaying object data.
+
+Debugger: Added support to display entire object linked lists when 
+displaying object data.
+
+iASL: Removed the obsolete -g option to obtain ACPI tables from the 
+Windows registry. This feature has been superseded by the acpidump 
+utility. 
+
+----------------------------------------
+14 January 2014. Summary of changes for version 20140114:
+
+1) ACPICA kernel-resident subsystem:
+
+Updated all ACPICA copyrights and signons to 2014. Added the 2014 
+copyright to all module headers and signons, including the standard Linux 
+header. This affects virtually every file in the ACPICA core subsystem, 
+iASL compiler, all ACPICA utilities, and the test suites.
+
+Improved parameter validation for AcpiInstallGpeBlock. Added the 
+following checks:
+1) The incoming device handle refers to type ACPI_TYPE_DEVICE.
+2) There is not already a GPE block attached to the device.
+Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a 
+device.
+
+Correctly support "references" in the ACPI_OBJECT. This change fixes the 
+support to allow references (namespace nodes) to be passed as arguments 
+to control methods via the evaluate object interface. This is probably 
+most useful for testing purposes, however.
+
+Improved support for 32/64 bit physical addresses in printf()-like 
+output. This change improves the support for physical addresses in printf 
+debug statements and other output on both 32-bit and 64-bit hosts. It 
+consistently outputs the appropriate number of bytes for each host. The 
+%p specifier is unsatisfactory since it does not emit uniform output on 
+all hosts/clib implementations (on some, leading zeros are not supported, 
+leading to difficult-to-read output).
+
+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:  96.2K Code, 27.0K Data, 123.2K Total
+    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
+  Previous Release:
+    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
+    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
+
+
+2) iASL Compiler/Disassembler and Tools:
+
+iASL: Fix a possible fault when using the Connection() operator. Fixes a 
+problem if the parent Field definition for the Connection operator refers 
+to an operation region that does not exist. ACPICA BZ 1064.
+
+AcpiExec: Load of local test tables is now optional. The utility has the 
+capability to load some various tables to test features of ACPICA. 
+However, there are enough of them that the output of the utility became 
+confusing. With this change, only the required local tables are displayed 
+(RSDP, XSDT, etc.) along with the actual tables loaded via the command 
+line specification. This makes the default output simler and easier to 
+understand. The -el command line option restores the original behavior 
+for testing purposes.
+
+AcpiExec: Added support for overlapping operation regions. This change 
+expands the simulation of operation regions by supporting regions that 
+overlap within the given address space. Supports SystemMemory and 
+SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
+
+AcpiExec: Added region handler support for PCI_Config and EC spaces. This 
+allows AcpiExec to simulate these address spaces, similar to the current 
+support for SystemMemory and SystemIO.
+
+Debugger: Added new command to read/write/compare all namespace objects. 
+The command "test objects" will exercise the entire namespace by writing 
+new values to each data object, and ensuring that the write was 
+successful. The original value is then restored and verified.
+
+Debugger: Added the "test predefined" command. This change makes this 
+test public and puts it under the new "test" command. The test executes 
+each and every predefined name within the current namespace.
+
+----------------------------------------
 18 December 2013. Summary of changes for version 20131218:
 
 Global note: The ACPI 5.0A specification was released this month. There 
--- a/sys/external/bsd/acpica/dist/common/acgetline.c	Sat Oct 25 19:08:48 2014 +0000
+++ b/sys/external/bsd/acpica/dist/common/acgetline.c	Sat Oct 25 20:57:55 2014 +0000
@@ -5,7 +5,7 @@
  *****************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2013, Intel Corp.
+ * Copyright (C) 2000 - 2014, Intel Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
--- a/sys/external/bsd/acpica/dist/common/adfile.c	Sat Oct 25 19:08:48 2014 +0000
+++ b/sys/external/bsd/acpica/dist/common/adfile.c	Sat Oct 25 20:57:55 2014 +0000
@@ -5,7 +5,7 @@
  *****************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2013, Intel Corp.
+ * Copyright (C) 2000 - 2014, Intel Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,7 +41,7 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-
+#include "aslcompiler.h"
 #include "acpi.h"
 #include "accommon.h"
 #include "acapps.h"
@@ -203,11 +203,16 @@
 
 
     /*
-     * Copy the original filename to a new buffer. Leave room for the worst case
-     * where we append the suffix, an added dot and the null terminator.
+     * Copy the original filename to a new buffer. Leave room for the worst
+     * case where we append the suffix, an added dot and the null terminator.
      */
-    NewFilename = ACPI_ALLOCATE_ZEROED ((ACPI_SIZE)
+    NewFilename = UtStringCacheCalloc ((ACPI_SIZE)
         strlen (InputFilename) + strlen (Suffix) + 2);
+    if (!NewFilename)
+    {
+        return (NULL);
+    }
+
     strcpy (NewFilename, InputFilename);
 
     /* Try to find the last dot in the filename */
@@ -250,7 +255,7 @@
     char                *NewString;
 
 
-    NewString = ACPI_ALLOCATE ((ACPI_SIZE) strlen (String) + 1);
+    NewString = UtStringCacheCalloc ((ACPI_SIZE) strlen (String) + 1);
     if (!NewString)
     {
         return (NULL);
@@ -332,7 +337,6 @@
 
     if (!Filename)
     {
-        ACPI_FREE (DirectoryPath);
         return (AE_NO_MEMORY);
     }
 
@@ -344,6 +348,5 @@
         return (AE_OK);
     }
 
-    ACPI_FREE (Filename);
     return (AE_OK);
 }
--- a/sys/external/bsd/acpica/dist/common/adisasm.c	Sat Oct 25 19:08:48 2014 +0000
+++ b/sys/external/bsd/acpica/dist/common/adisasm.c	Sat Oct 25 20:57:55 2014 +0000
@@ -5,7 +5,7 @@
  *****************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2013, Intel Corp.
+ * Copyright (C) 2000 - 2014, Intel Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,12 +41,9 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-
-#include "acpi.h"
-#include "accommon.h"
+#include "aslcompiler.h"
 #include "acparser.h"
 #include "amlcode.h"
-#include "acdebug.h"
 #include "acdisasm.h"
 #include "acdispat.h"
 #include "acnamesp.h"
@@ -60,29 +57,8 @@
 #define _COMPONENT          ACPI_TOOLS
         ACPI_MODULE_NAME    ("adisasm")
 
-/*
- * Older versions of Bison won't emit this external in the generated header.
- * Newer versions do emit the external, so we don't need to do it.
- */
-#ifndef ASLCOMPILER_ASLCOMPILERPARSE_H
-extern int                  AslCompilerdebug;
-#endif
-
-ACPI_STATUS
-NsDisplayNamespace (
-    void);
-
-void
-NsSetupNamespaceListing (
-    void                    *Handle);
-
-
 /* Local prototypes */
 
-static UINT32
-AdGetFileSize (
-    FILE                    *File);
-
 static void
 AdCreateTableHeader (
     char                    *Filename,
@@ -152,39 +128,7 @@
 
 
 static ACPI_TABLE_DESC      LocalTables[1];
-static ACPI_PARSE_OBJECT    *AcpiGbl_ParseOpRoot;
-
-
-/*******************************************************************************
- *
- * FUNCTION:    AdGetFileSize
- *
- * PARAMETERS:  File                - Open file handle
- *
- * RETURN:      File Size
- *
- * DESCRIPTION: Get current file size. Uses seek-to-EOF. File must be open.
- *
- ******************************************************************************/
-
-static UINT32
-AdGetFileSize (
-    FILE                    *File)
-{
-    UINT32                  FileSize;
-    long                    Offset;
-
-
-    Offset = ftell (File);
-
-    fseek (File, 0, SEEK_END);
-    FileSize = (UINT32) ftell (File);
-
-    /* Restore file pointer */
-
-    fseek (File, Offset, SEEK_SET);
-    return (FileSize);
-}
+ACPI_PARSE_OBJECT    *AcpiGbl_ParseOpRoot;
 
 
 /*******************************************************************************
@@ -206,7 +150,7 @@
     ACPI_STATUS             Status;
 
 
-    /* ACPI CA subsystem initialization */
+    /* ACPICA subsystem initialization */
 
     Status = AcpiOsInitialize ();
     if (ACPI_FAILURE (Status))
@@ -250,7 +194,6 @@
  *              OutToFile           - TRUE if output should go to a file
  *              Prefix              - Path prefix for output
  *              OutFilename         - where the filename is returned
- *              GetAllTables        - TRUE if all tables are desired
  *
  * RETURN:      Status
  *
@@ -263,8 +206,7 @@
     BOOLEAN                 OutToFile,
     char                    *Filename,
     char                    *Prefix,
-    char                    **OutFilename,
-    BOOLEAN                 GetAllTables)
+    char                    **OutFilename)
 {
     ACPI_STATUS             Status;
     char                    *DisasmFilename = NULL;
@@ -348,7 +290,7 @@
     }
     else
     {
-        Status = AdGetLocalTables (Filename, GetAllTables);
+        Status = AdGetLocalTables ();
         if (ACPI_FAILURE (Status))
         {
             AcpiOsPrintf ("Could not get ACPI tables, %s\n",
@@ -383,7 +325,7 @@
         /* Create/Open a disassembly output file */
 
         DisasmFilename = FlGenerateFilename (Prefix, FILE_SUFFIX_DISASSEMBLY);
-        if (!OutFilename)
+        if (!DisasmFilename)
         {
             fprintf (stderr, "Could not generate output filename\n");
             Status = AE_ERROR;
@@ -395,6 +337,7 @@
         {
             fprintf (stderr, "Could not open output file %s\n", DisasmFilename);
             Status = AE_ERROR;
+            ACPI_FREE (DisasmFilename);
             goto Cleanup;
         }
 
@@ -415,7 +358,7 @@
         fprintf (stderr, "Acpi Data Table [%4.4s] decoded\n",
             Table->Signature);
         fprintf (stderr, "Formatted output:  %s - %u bytes\n",
-            DisasmFilename, AdGetFileSize (File));
+            DisasmFilename, CmGetFileSize (File));
     }
     else
     {
@@ -471,9 +414,10 @@
                 "reparsing with new information\n",
                 AcpiDmGetExternalMethodCount ());
 
-            /* Reparse, rebuild namespace. no need to xref namespace */
+            /* Reparse, rebuild namespace */
 
             AcpiPsDeleteParseTree (AcpiGbl_ParseOpRoot);
+            AcpiGbl_ParseOpRoot = NULL;
             AcpiNsDeleteNamespaceSubtree (AcpiGbl_RootNode);
 
             AcpiGbl_RootNode                    = NULL;
@@ -487,6 +431,9 @@
             AcpiGbl_RootNodeStruct.Flags        = 0;
 
             Status = AcpiNsRootInitialize ();
+
+            /* New namespace, add the external definitions first */
+
             AcpiDmAddExternalsToNamespace ();
 
             /* Parse the table again. No need to reload it, however */
@@ -499,6 +446,14 @@
                 goto Cleanup;
             }
 
+            /* Cross reference the namespace again */
+
+            AcpiDmFinishNamespaceLoad (AcpiGbl_ParseOpRoot,
+                AcpiGbl_RootNode, OwnerId);
+
+            AcpiDmCrossReferenceNamespace (AcpiGbl_ParseOpRoot,
+                AcpiGbl_RootNode, OwnerId);
+
             if (AslCompilerdebug)
             {
                 AcpiOsPrintf ("/**** After second load and resource conversion\n");
@@ -533,7 +488,15 @@
 
             fprintf (stderr, "Disassembly completed\n");
             fprintf (stderr, "ASL Output:    %s - %u bytes\n",
-                DisasmFilename, AdGetFileSize (File));
+                DisasmFilename, CmGetFileSize (File));
+
+            if (Gbl_MapfileFlag)
+            {
+                fprintf (stderr, "%14s %s - %u bytes\n",
+                    Gbl_Files[ASL_FILE_MAP_OUTPUT].ShortDescription,
+                    Gbl_Files[ASL_FILE_MAP_OUTPUT].Filename,
+                    FlGetFileSize (ASL_FILE_MAP_OUTPUT));
+            }
         }
     }
 
@@ -570,7 +533,7 @@
  *
  * RETURN:      None
  *
- * DESCRIPTION: Create the disassembler header, including ACPI CA signon with
+ * DESCRIPTION: Create the disassembler header, including ACPICA signon with
  *              current time and date.
  *
  *****************************************************************************/
@@ -602,7 +565,7 @@
  *
  * RETURN:      None
  *
- * DESCRIPTION: Create the ASL table header, including ACPI CA signon with
+ * DESCRIPTION: Create the ASL table header, including ACPICA signon with
  *              current time and date.
  *
  *****************************************************************************/
@@ -679,9 +642,18 @@
     }
     else
     {
-        NewFilename = ACPI_ALLOCATE_ZEROED (9);
-        strncat (NewFilename, Table->Signature, 4);
-        strcat (NewFilename, ".aml");
+        NewFilename = UtStringCacheCalloc (9);
+        if (NewFilename)
+        {
+            strncat (NewFilename, Table->Signature, 4);
+            strcat (NewFilename, ".aml");
+        }
+    }
+
+    if (!NewFilename)
+    {
+        AcpiOsPrintf (" **** Could not generate AML output filename\n");
+        return;
     }
 
     /* Open the ASL definition block */
@@ -690,8 +662,6 @@
         "DefinitionBlock (\"%s\", \"%4.4s\", %hu, \"%.6s\", \"%.8s\", 0x%8.8X)\n",
         NewFilename, Table->Signature, Table->Revision,
         Table->OemId, Table->OemTableId, Table->OemRevision);
-
-    ACPI_FREE (NewFilename);
 }
 
 
@@ -726,6 +696,7 @@
     }
 
     AcpiDmDisassemble (NULL, AcpiGbl_ParseOpRoot, ACPI_UINT32_MAX);
+    MpEmitMappingInfo ();
 
     if (AcpiGbl_DbOpt_verbose)
     {
@@ -746,8 +717,7 @@
  *
  * FUNCTION:    AdGetLocalTables
  *
- * PARAMETERS:  Filename            - Not used
- *              GetAllTables        - TRUE if all tables are desired
+ * PARAMETERS:  None
  *
  * RETURN:      Status
  *
@@ -757,105 +727,36 @@
 
 ACPI_STATUS
 AdGetLocalTables (
-    char                    *Filename,
-    BOOLEAN                 GetAllTables)
+    void)
 {
     ACPI_STATUS             Status;
     ACPI_TABLE_HEADER       TableHeader;
     ACPI_TABLE_HEADER       *NewTable;
-    UINT32                  NumTables;
-    UINT32                  PointerSize;
     UINT32                  TableIndex;
 
 
-    if (GetAllTables)
-    {
-        ACPI_MOVE_32_TO_32 (TableHeader.Signature, ACPI_SIG_RSDT);
-        AcpiOsTableOverride (&TableHeader, &NewTable);
-        if (!NewTable)
-        {
-            fprintf (stderr, "Could not obtain RSDT\n");
-            return (AE_NO_ACPI_TABLES);
-        }
-        else
-        {
-            AdWriteTable (NewTable, NewTable->Length,
-                ACPI_SIG_RSDT, NewTable->OemTableId);
-        }
-
-        if (ACPI_COMPARE_NAME (NewTable->Signature, ACPI_SIG_RSDT))
-        {
-            PointerSize = sizeof (UINT32);
-        }
-        else
-        {
-            PointerSize = sizeof (UINT64);
-        }
-
-        /*
-         * Determine the number of tables pointed to by the RSDT/XSDT.
-         * This is defined by the ACPI Specification to be the number of
-         * pointers contained within the RSDT/XSDT. The size of the pointers
-         * is architecture-dependent.
-         */
-        NumTables = (NewTable->Length - sizeof (ACPI_TABLE_HEADER)) / PointerSize;
-        AcpiOsPrintf ("There are %u tables defined in the %4.4s\n\n",
-            NumTables, NewTable->Signature);
-
-        /* Get the FADT */
-
-        ACPI_MOVE_32_TO_32 (TableHeader.Signature, ACPI_SIG_FADT);
-        AcpiOsTableOverride (&TableHeader, &NewTable);
-        if (NewTable)
-        {
-            AdWriteTable (NewTable, NewTable->Length,
-                ACPI_SIG_FADT, NewTable->OemTableId);
-        }
-        AcpiOsPrintf ("\n");
-
-        /* Don't bother with FACS, it is usually all zeros */
-    }
-
-    /* Always get the DSDT */
+    /* Get the DSDT via table override */
 
     ACPI_MOVE_32_TO_32 (TableHeader.Signature, ACPI_SIG_DSDT);
     AcpiOsTableOverride (&TableHeader, &NewTable);
-    if (NewTable)
-    {
-        AdWriteTable (NewTable, NewTable->Length,
-            ACPI_SIG_DSDT, NewTable->OemTableId);
-
-        /* Store DSDT in the Table Manager */
-
-        Status = AcpiTbStoreTable (0, NewTable, NewTable->Length,
-                    0, &TableIndex);
-        if (ACPI_FAILURE (Status))
-        {
-            fprintf (stderr, "Could not store DSDT\n");
-            return (AE_NO_ACPI_TABLES);
-        }
-    }
-    else
+    if (!NewTable)
     {
         fprintf (stderr, "Could not obtain DSDT\n");
         return (AE_NO_ACPI_TABLES);
     }
 
-#if 0
-    /* TBD: Future implementation */
+    AdWriteTable (NewTable, NewTable->Length,
+        ACPI_SIG_DSDT, NewTable->OemTableId);
 
-    AcpiOsPrintf ("\n");
-
-    /* Get all SSDTs */
+    /* Store DSDT in the Table Manager */
 
-    ACPI_MOVE_32_TO_32 (TableHeader.Signature, ACPI_SIG_SSDT);
-    do
+    Status = AcpiTbStoreTable (0, NewTable, NewTable->Length,
+                0, &TableIndex);
+    if (ACPI_FAILURE (Status))
     {
-        NewTable = NULL;
-        Status = AcpiOsTableOverride (&TableHeader, &NewTable);
-
-    } while (NewTable);
-#endif
+        fprintf (stderr, "Could not store DSDT\n");
+        return (AE_NO_ACPI_TABLES);
+    }
 
     return (AE_OK);
 }
@@ -944,7 +845,8 @@
     if (LoadTable)
     {
         Status = AcpiTbStoreTable ((ACPI_PHYSICAL_ADDRESS) Table, Table,
-                    Table->Length, ACPI_TABLE_ORIGIN_ALLOCATED, &TableIndex);
+                    Table->Length, ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL,
+                    &TableIndex);
         if (ACPI_FAILURE (Status))
         {
             return (Status);
@@ -979,9 +881,12 @@
         return (AE_OK);
     }
 
-    /* Pass 3: Parse control methods and link their parse trees into the main parse tree */
-
-    fprintf (stderr, "Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions)\n");
+    /*
+     * Pass 3: Parse control methods and link their parse trees
+     * into the main parse tree
+     */
+    fprintf (stderr,
+        "Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions)\n");
     Status = AcpiDmParseDeferredOps (AcpiGbl_ParseOpRoot);
     fprintf (stderr, "\n");
 
--- a/sys/external/bsd/acpica/dist/common/adwalk.c	Sat Oct 25 19:08:48 2014 +0000
+++ b/sys/external/bsd/acpica/dist/common/adwalk.c	Sat Oct 25 20:57:55 2014 +0000
@@ -5,7 +5,7 @@
  *****************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2013, Intel Corp.
+ * Copyright (C) 2000 - 2014, Intel Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,7 +41,6 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-
 #include "acpi.h"
 #include "accommon.h"
 #include "acparser.h"
@@ -760,11 +759,13 @@
 
     if ((!(OpInfo->Flags & AML_NAMED)) &&
         (!(OpInfo->Flags & AML_CREATE)) &&
-        (Op->Common.AmlOpcode != AML_INT_NAMEPATH_OP))
+        (Op->Common.AmlOpcode != AML_INT_NAMEPATH_OP) &&
+        (Op->Common.AmlOpcode != AML_NOTIFY_OP))
     {
         goto Exit;
     }
 
+
     /* Get the NamePath from the appropriate place */
 
     if (OpInfo->Flags & AML_NAMED)
@@ -801,6 +802,10 @@
             Path = NextOp->Common.Value.String;
         }
     }
+    else if (Op->Common.AmlOpcode == AML_NOTIFY_OP)
+    {
+        Path = Op->Common.Value.Arg->Asl.Value.String;
+    }
     else
     {
         Path = Op->Common.Value.String;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/external/bsd/acpica/dist/common/ahids.c	Sat Oct 25 20:57:55 2014 +0000
@@ -0,0 +1,240 @@
+/******************************************************************************
+ *
+ * Module Name: ahids - Table of ACPI/PNP _HID/_CID values
+ *
+ *****************************************************************************/
+
+/*
+ * Copyright (C) 2000 - 2014, 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 "acpi.h"
+#include "accommon.h"
+
+#define _COMPONENT          ACPI_UTILITIES
+        ACPI_MODULE_NAME    ("ahids")
+
+
+/*
+ * ACPI/PNP Device IDs with description strings
+ */
+const AH_DEVICE_ID  AslDeviceIds[] =
+{
+    {"10EC5640",    "Realtek I2S Audio Codec"},
+    {"80860F09",    "Intel PWM Controller"},
+    {"80860F0A",    "Intel Atom UART Controller"},
+    {"80860F0E",    "Intel SPI Controller"},
+    {"80860F14",    "Intel Baytrail SDIO/MMC Host Controller"},
+    {"80860F28",    "Intel SST Audio DSP"},
+    {"80860F41",    "Intel Baytrail I2C Host Controller"},
+    {"ACPI0001",    "SMBus 1.0 Host Controller"},
+    {"ACPI0002",    "Smart Battery Subsystem"},
+    {"ACPI0003",    "Power Source Device"},
+    {"ACPI0004",    "Module Device"},
+    {"ACPI0005",    "SMBus 2.0 Host Controller"},
+    {"ACPI0006",    "GPE Block Device"},
+    {"ACPI0007",    "Processor Device"},
+    {"ACPI0008",    "Ambient Light Sensor Device"},
+    {"ACPI0009",    "I/O xAPIC Device"},
+    {"ACPI000A",    "I/O APIC Device"},
+    {"ACPI000B",    "I/O SAPIC Device"},
+    {"ACPI000C",    "Processor Aggregator Device"},
+    {"ACPI000D",    "Power Meter Device"},
+    {"ACPI000E",    "Time and Alarm Device"},
+    {"ACPI000F",    "User Presence Detection Device"},
+    {"ADMA0F28",    "Intel Audio DMA"},
+    {"AMCR0F28",    "Intel Audio Machine Driver"},
+    {"ATK4001",     "Asus Radio Control Button"},
+    {"ATML1000",    "Atmel Touchscreen Controller"},
+    {"AUTH2750",    "AuthenTec AES2750"},
+    {"BCM2E39",     "Broadcom BT Serial Bus Driver over UART Bus Enumerator"},
+    {"BCM4752E",    "Broadcom GPS Controller"},
+    {"BMG0160",     "Bosch Gyro Sensor"},
+    {"CPLM3218",    "Capella Micro CM3218x Ambient Light Sensor"},
+    {"DELLABCE",    "Dell Airplane Mode Switch Driver"},
+    {"DLAC3002",    "Qualcomm Atheros Bluetooth UART Transport"},
+    {"FTTH5506",    "FocalTech 5506 Touch Controller"},
+    {"HAD0F28",     "Intel HDMI Audio Driver"},
+    {"INBC0000",    "GPIO Expander"},
+    {"INT0002",     "Virtual GPIO Controller"},
+    {"INT0800",     "Intel 82802 Firmware Hub Device"},
+    {"INT3394",     "ACPI System Fan"},
+    {"INT3396",     "Standard Power Management Controller"},
+    {"INT33A0",     "Intel Smart Connect Technology Device"},
+    {"INT33A1",     "Intel Power Engine"},
+    {"INT33BB",     "Intel Baytrail SD Host Controller"},
+    {"INT33BD",     "Intel Baytrail Mailbox Device"},
+    {"INT33BE",     "Camera Sensor OV5693"},
+    {"INT33C0",     "Intel Serial I/O SPI Host Controller"},
+    {"INT33C1",     "Intel Serial I/O SPI Host Controller"},
+    {"INT33C2",     "Intel Serial I/O I2C Host Controller"},
+    {"INT33C3",     "Intel Serial I/O I2C Host Controller"},
+    {"INT33C4",     "Intel Serial I/O UART Host Controller"},
+    {"INT33C5",     "Intel Serial I/O UART Host Controller"},
+    {"INT33C6",     "Intel SD Host Controller"},
+    {"INT33C7",     "Intel Serial I/O GPIO Host Controller"},
+    {"INT33C8",     "Intel Smart Sound Technology Host Controller"},
+    {"INT33C9",     "Wolfson Microelectronics Audio WM5102"},
+    {"INT33CA",     "Intel SPB Peripheral"},
+    {"INT33CB",     "Intel Smart Sound Technology Audio Codec"},
+    {"INT33D1",     "Intel GPIO Buttons"},
+    {"INT33D2",     "Intel GPIO Buttons"},
+    {"INT33D3",     "Intel GPIO Buttons"},
+    {"INT33D4",     "Intel GPIO Buttons"},
+    {"INT33D6",     "Intel Virtual Buttons Device"},
+    {"INT33F0",     "Camera Sensor MT9M114"},
+    {"INT33F4",     "XPOWER PMIC Controller"},
+    {"INT33F5",     "TI PMIC Controller"},
+    {"INT33FB",     "MIPI-CSI Camera Sensor OV2722"},
+    {"INT33FC",     "Intel Baytrail GPIO Controller"},
+    {"INT33FD",     "Intel Baytrail Power Management IC"},
+    {"INT33FE",     "XPOWER Battery Device"},
+    {"INT3400",     "Intel Dynamic Power Performance Management"},
+    {"INT3401",     "Intel Extended Thermal Model CPU"},
+    {"INT3403",     "DPTF Temperature Sensor"},
+    {"INT3406",     "Intel Dynamic Platform & Thermal Framework Display Participant"},
+    {"INT3407",     "DPTF Platform Power Meter"},
+    {"INT340E",     "Motherboard Resources"},
+    {"INT3420",     "Intel Bluetooth RF Kill"},
+    {"INT3F0D",     "ACPI Motherboard Resources"},
+    {"INTCF1A",     "Sony IMX175 Camera Sensor"},
+    {"INTCFD9",     "Intel Baytrail SOC GPIO Controller"},
+    {"INTL9C60",    "Intel Baytrail SOC DMA Controller"},
+    {"INVN6500",    "InvenSense MPU-6500 Six Axis Gyroscope and Accelerometer"},
+    {"LNXCPU",      "Linux Logical CPU"},
+    {"LNXPOWER",    "ACPI Power Resource (power gating)"},
+    {"LNXPWRBN",    "System Power Button"},
+    {"LNXSYBUS",    "System Bus"},
+    {"LNXSYSTM",    "ACPI Root Node"},
+    {"LNXTHERM",    "ACPI Thermal Zone"},
+    {"LNXVIDEO",    "ACPI Video Controller"},
+    {"MAX17047",    "Fuel Gauge Controller"},
+    {"MSFT0101",    "TPM 2.0 Security Device"},
+    {"NXP5442",     "NXP 5442 Near Field Communications Controller"},
+    {"NXP5472",     "NXP NFC"},
+    {"PNP0000",     "8259-compatible Programmable Interrupt Controller"},
+    {"PNP0001",     "EISA Interrupt Controller"},
+    {"PNP0002",     "MCA Interrupt Controller"},
+    {"PNP0003",     "IO-APIC Interrupt Controller"},
+    {"PNP0100",     "PC-class System Timer"},
+    {"PNP0103",     "HPET System Timer"},
+    {"PNP0200",     "PC-class DMA Controller"},
+    {"PNP0300",     "IBM PC/XT Keyboard Controller (83 key)"},
+    {"PNP0301",     "IBM PC/XT Keyboard Controller (86 key)"},
+    {"PNP0302",     "IBM PC/XT Keyboard Controller (84 key)"},
+    {"PNP0303",     "IBM Enhanced Keyboard (101/102-key, PS/2 Mouse)"},
+    {"PNP0400",     "Standard LPT Parallel Port"},
+    {"PNP0401",     "ECP Parallel Port"},
+    {"PNP0500",     "Standard PC COM Serial Port"},
+    {"PNP0501",     "16550A-compatible COM Serial Port"},
+    {"PNP0510",     "Generic IRDA-compatible Device"},
+    {"PNP0800",     "Microsoft Sound System Compatible Device"},
+    {"PNP0A03",     "PCI Bus"},
+    {"PNP0A05",     "Generic Container Device"},
+    {"PNP0A06",     "Generic Container Device"},
+    {"PNP0A08",     "PCI Express Bus"},
+    {"PNP0B00",     "AT Real-Time Clock"},
+    {"PNP0B01",     "Intel PIIX4-compatible RTC/CMOS Device"},
+    {"PNP0B02",     "Dallas Semiconductor-compatible RTC/CMOS Device"},
+    {"PNP0C01",     "System Board"},
+    {"PNP0C02",     "PNP Motherboard Resources"},
+    {"PNP0C04",     "x87-compatible Floating Point Processing Unit"},
+    {"PNP0C08",     "ACPI Core Hardware"},
+    {"PNP0C09",     "Embedded Controller Device"},
+    {"PNP0C0A",     "Control Method Battery"},
+    {"PNP0C0B",     "Fan (Thermal Solution)"},
+    {"PNP0C0C",     "Power Button Device"},
+    {"PNP0C0D",     "Lid Device"},
+    {"PNP0C0E",     "Sleep Button Device"},
+    {"PNP0C0F",     "PCI Interrupt Link Device"},
+    {"PNP0C10",     "System Indicator Device"},
+    {"PNP0C11",     "Thermal Zone"},
+    {"PNP0C12",     "Device Bay Controller"},
+    {"PNP0C14",     "Windows Management Instrumentation Device"},
+    {"PNP0C15",     "Docking Station"},
+    {"PNP0C40",     "Standard Button Controller"},
+    {"PNP0C50",     "HID Protocol Device (I2C bus)"},
+    {"PNP0C60",     "Display Sensor Device"},
+    {"PNP0C70",     "Dock Sensor Device"},
+    {"PNP0C80",     "Memory Device"},
+    {"PNP0D10",     "XHCI USB Controller with debug"},
+    {"PNP0D15",     "XHCI USB Controller without debug"},
+    {"PNP0D20",     "EHCI USB Controller without debug"},
+    {"PNP0D25",     "EHCI USB Controller with debug"},
+    {"PNP0D40",     "SDA Standard Compliant SD Host Controller"},
+    {"PNP0D80",     "Windows-compatible System Power Management Controller"},
+    {"PNP0F03",     "Microsoft PS/2-style Mouse"},
+    {"PNP0F13",     "PS/2 Mouse"},
+    {"RTL8723",     "Realtek Wireless Controller"},
+    {"SMB0349",     "Charger"},
+    {"SMO91D0",     "Sensor Hub"},
+    {"SMSC3750",    "SMSC 3750 USB MUX"},
+    {"SSPX0000",    "Intel SSP Device"},
+    {"TBQ24296",    "Charger"},
+
+    {NULL, NULL}
+};
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    AcpiAhMatchHardwareId
+ *
+ * PARAMETERS:  HardwareId          - String representation of an _HID or _CID
+ *
+ * RETURN:      ID info struct. NULL if HardwareId is not found
+ *
+ * DESCRIPTION: Lookup an _HID/_CID in the device ID table
+ *
+ ******************************************************************************/
+
+const AH_DEVICE_ID *
+AcpiAhMatchHardwareId (
+    char                    *HardwareId)
+{
+    const AH_DEVICE_ID      *Info;
+
+
+    for (Info = AslDeviceIds; Info->Name; Info++)
+    {
+        if (!ACPI_STRCMP (HardwareId, Info->Name))
+        {
+            return (Info);
+        }
+    }
+
+    return (NULL);
+}
--- a/sys/external/bsd/acpica/dist/common/ahpredef.c	Sat Oct 25 19:08:48 2014 +0000
+++ b/sys/external/bsd/acpica/dist/common/ahpredef.c	Sat Oct 25 20:57:55 2014 +0000
@@ -5,7 +5,7 @@
  *****************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2013, Intel Corp.
+ * Copyright (C) 2000 - 2014, Intel Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -44,6 +44,9 @@
 #include "acpi.h"
 #include "accommon.h"
 
+#define _COMPONENT          ACPI_UTILITIES
+        ACPI_MODULE_NAME    ("ahpredef")
+
 /*
  * iASL only needs a partial table (short descriptions only).
  * AcpiHelp needs the full table.
@@ -94,6 +97,7 @@
     AH_PREDEF ("_BTM",    "Battery Time", "Returns the battery runtime"),
     AH_PREDEF ("_BTP",    "Battery Trip Point", "Sets a Control Method Battery trip point"),
     AH_PREDEF ("_CBA",    "Configuration Base Address", "Sets the base address for a PCI Express host bridge"),
+    AH_PREDEF ("_CCA",    "Cache Coherency Attribute", "Returns a device's support level for cache coherency"),
     AH_PREDEF ("_CDM",    "Clock Domain", "Returns a logical processor's clock domain identifier"),
     AH_PREDEF ("_CID",    "Compatible ID", "Returns a device's Plug and Play Compatible ID list"),
     AH_PREDEF ("_CLS",    "Class Code", "Returns PCI class code and subclass"),
@@ -118,6 +122,7 @@
     AH_PREDEF ("_DOS",    "Disable Output Switching", "Sets the display output switching mode"),
     AH_PREDEF ("_DPL",    "Device Selection Polarity", "Polarity of Device Selection signal, Resource Descriptor field"),
     AH_PREDEF ("_DRS",    "Drive Strength", "Drive Strength setting for GPIO connection, Resource Descriptor field"),
+    AH_PREDEF ("_DSD",    "Device-Specific Data", "Returns a list of device property information"),
     AH_PREDEF ("_DSM",    "Device-Specific Method", "Executes device-specific functions"),
     AH_PREDEF ("_DSS",    "Device Set State", "Sets the display device state"),
     AH_PREDEF ("_DSW",    "Device Sleep Wake", "Sets the sleep and wake transition states for a device"),
@@ -169,6 +174,7 @@
     AH_PREDEF ("_LID",    "Lid Status", "Returns the open/closed status of the lid on a mobile system"),
     AH_PREDEF ("_LIN",    "Lines In Use", "Handshake lines, Resource Descriptor field"),
     AH_PREDEF ("_LL_",    "Low Level", "Interrupt polarity, Resource Descriptor field"),
+    AH_PREDEF ("_LPD",    "Low Power Dependencies", "Returns a list of dependencies for low power idle entry"),
     AH_PREDEF ("_MAF",    "Maximum Address Fixed", "Resource Descriptor field"),
     AH_PREDEF ("_MAT",    "Multiple APIC Table Entry", "Returns a list of MADT APIC structure entries"),
     AH_PREDEF ("_MAX",    "Maximum Base Address", "Resource Descriptor field"),
@@ -321,3 +327,34 @@
     AH_PREDEF ("_Wxx",    "Wake Event", "Method executed as a result of a wake event"),
     AH_PREDEF (NULL,      NULL, NULL)
 };
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    AcpiAhMatchPredefinedName
+ *
+ * PARAMETERS:  Nameseg                 - Predefined name string
+ *
+ * RETURN:      ID info struct. NULL if Nameseg not found
+ *
+ * DESCRIPTION: Lookup a predefined name.
+ *
+ ******************************************************************************/
+
+const AH_PREDEFINED_NAME *
+AcpiAhMatchPredefinedName (
+    char                        *Nameseg)
+{
+    const AH_PREDEFINED_NAME    *Info;
+
+
+    for (Info = AslPredefinedInfo; Info->Name; Info++)
+    {
+        if (ACPI_COMPARE_NAME (Nameseg, Info->Name))
+        {
+            return (Info);
+        }
+    }
+
+    return (NULL);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/external/bsd/acpica/dist/common/ahuuids.c	Sat Oct 25 20:57:55 2014 +0000
@@ -0,0 +1,132 @@
+/******************************************************************************
+ *
+ * Module Name: ahuuids - Table of known ACPI-related UUIDs
+ *
+ *****************************************************************************/
+
+/*
+ * Copyright (C) 2000 - 2014, 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 "acpi.h"
+#include "accommon.h"
+
+#define _COMPONENT          ACPI_UTILITIES
+        ACPI_MODULE_NAME    ("ahuuids")
+
+/*
+ * Table of "known" (ACPI-related) UUIDs
+ */
+const AH_UUID  AcpiUuids[] =
+{
+    {"PCI Host Bridge Device",
+        "33db4d5b-1ff7-401c-9657-7441c03dd766"},
+
+    {"Platform-wide Capabilities",
+        "0811b06e-4a27-44f9-8d60-3cbbc22e7b48"},
+
+    {"Dynamic Enumeration",
+        "d8c1a3a6-be9b-4c9b-91bf-c3cb81fc5daf"},
+
+    {"GPIO Controller",
+        "4f248f40-d5e2-499f-834c-27758ea1cd3f"},
+
+    {"Battery Thermal Limit",
+        "4c2067e3-887d-475c-9720-4af1d3ed602e"},
+
+    {"Thermal Extensions",
+        "14d399cd-7a27-4b18-8fb4-7cb7b9f4e500"},
+
+    {"USB Controller",
+        "ce2ee385-00e6-48cb-9f05-2edb927c4899"},
+
+    {"HID I2C Device",
+        "3cdff6f7-4267-4555-ad05-b30a3d8938de"},
+
+    {"Power Button Device",
+        "dfbcf3c5-e7a5-44e6-9c1f-29c76f6e059c"},
+
+    {"Device Labeling Interface",
+        "e5c937d0-3553-4d7a-9117-ea4d19c3434d"},
+
+    {"SATA Controller",
+        "e4db149b-fcfe-425b-a6d8-92357d78fc7f"},
+
+    {"Physical Presence Interface",
+        "3dddfaa6-361b-4eb4-a424-8d10089d1653"},
+
+    {"Device Properties for _DSD",
+        "daffd814-6eba-4d8c-8a91-bc9bbf4aa301"},
+
+    {NULL, NULL}
+};
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    AcpiAhMatchUuid
+ *
+ * PARAMETERS:  Data                - Data buffer containing a UUID
+ *
+ * RETURN:      ASCII description string for the UUID if it is found.
+ *
+ * DESCRIPTION: Returns a description string for "known" UUIDs, which are
+ *              are UUIDs that are related to ACPI in some way.
+ *
+ ******************************************************************************/
+
+const char *
+AcpiAhMatchUuid (
+    UINT8                   *Data)
+{
+    const AH_UUID           *Info;
+    UINT8                   UuidBuffer[UUID_BUFFER_LENGTH];
+
+
+    /* Walk the table of known ACPI-related UUIDs */
+
+    for (Info = AcpiUuids; Info->Description; Info++)
+    {
+        AcpiUtConvertStringToUuid (Info->String, UuidBuffer);
+
+        if (!ACPI_MEMCMP (Data, UuidBuffer, UUID_BUFFER_LENGTH))
+        {
+            return (Info->Description);
+        }
+    }
+
+    return (NULL);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/external/bsd/acpica/dist/common/cmfsize.c	Sat Oct 25 20:57:55 2014 +0000
@@ -0,0 +1,113 @@
+/******************************************************************************
+ *
+ * Module Name: cfsize - Common get file size function
+ *
+ *****************************************************************************/
+
+/*
+ * Copyright (C) 2000 - 2014, 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 "acpi.h"
+#include "accommon.h"
+#include "acapps.h"
+#include <stdio.h>
+
+#define _COMPONENT          ACPI_TOOLS
+        ACPI_MODULE_NAME    ("cmfsize")
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    CmGetFileSize
+ *
+ * PARAMETERS:  File                    - Open file descriptor
+ *
+ * RETURN:      File Size. On error, -1 (ACPI_UINT32_MAX)
+ *
+ * DESCRIPTION: Get the size of a file. Uses seek-to-EOF. File must be open.
+ *              Does not disturb the current file pointer.
+ *
+ ******************************************************************************/
+
+UINT32
+CmGetFileSize (
+    ACPI_FILE               File)
+{
+    long                    FileSize;
+    long                    CurrentOffset;
+    ACPI_STATUS             Status;
+
+
+    /* Save the current file pointer, seek to EOF to obtain file size */
+
+    CurrentOffset = AcpiOsGetFileOffset (File);
+    if (CurrentOffset < 0)
+    {
+        goto OffsetError;
+    }
+
+    Status = AcpiOsSetFileOffset (File, 0, ACPI_FILE_END);
+    if (ACPI_FAILURE (Status))
+    {
+        goto SeekError;
+    }
+
+    FileSize = AcpiOsGetFileOffset (File);
+    if (FileSize < 0)
+    {
+        goto OffsetError;
+    }
+
+    /* Restore original file pointer */
+
+    Status = AcpiOsSetFileOffset (File, CurrentOffset, ACPI_FILE_BEGIN);
+    if (ACPI_FAILURE (Status))
+    {
+        goto SeekError;
+    }
+
+    return ((UINT32) FileSize);
+
+
+OffsetError:
+    AcpiLogError ("Could not get file offset");
+    return (ACPI_UINT32_MAX);
+
+SeekError:
+    AcpiLogError ("Could not set file offset");
+    return (ACPI_UINT32_MAX);
+}
--- a/sys/external/bsd/acpica/dist/common/dmextern.c	Sat Oct 25 19:08:48 2014 +0000
+++ b/sys/external/bsd/acpica/dist/common/dmextern.c	Sat Oct 25 20:57:55 2014 +0000
@@ -5,7 +5,7 @@
  *****************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2013, Intel Corp.
+ * Copyright (C) 2000 - 2014, Intel Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -67,7 +67,7 @@
  */
 static const char           *AcpiGbl_DmTypeNames[] =
 {
-    /* 00 */ "",                    /* Type ANY */
+    /* 00 */ ", UnknownObj",        /* Type ANY */
     /* 01 */ ", IntObj",
     /* 02 */ ", StrObj",
     /* 03 */ ", BuffObj",
@@ -397,6 +397,7 @@
     {
         fprintf (stderr, "Could not open external reference file \"%s\"\n",
             Gbl_ExternalRefFilename);
+        AslAbort ();
         return;
     }
 
@@ -405,18 +406,37 @@
     while (fgets (StringBuffer, ASL_MSG_BUFFER_SIZE, ExternalRefFile))
     {
         Token = strtok (StringBuffer, METHOD_SEPARATORS);   /* "External" */
-        if (!Token) continue;
-        if (strcmp (Token, "External")) continue;
+        if (!Token)
+        {
+            continue;
+        }
+        if (strcmp (Token, "External"))
+        {
+            continue;
+        }
 
         MethodName = strtok (NULL, METHOD_SEPARATORS);      /* Method namepath */
-        if (!MethodName) continue;
+        if (!MethodName)
+        {
+            continue;
+        }
 
         Token = strtok (NULL, METHOD_SEPARATORS);           /* "MethodObj" */
-        if (!Token) continue;
-        if (strcmp (Token, "MethodObj")) continue;
+        if (!Token)
+        {
+            continue;
+        }
+
+        if (strcmp (Token, "MethodObj"))
+        {
+            continue;
+        }
 
         Token = strtok (NULL, METHOD_SEPARATORS);           /* Arg count */
-        if (!Token) continue;
+        if (!Token)
+        {
+            continue;
+        }
 
         /* Convert arg count string to an integer */
 
@@ -791,7 +811,8 @@
             /* Duplicate method, check that the Value (ArgCount) is the same */
 
             if ((NextExternal->Type == ACPI_TYPE_METHOD) &&
-                (NextExternal->Value != Value))
+                (NextExternal->Value != Value) &&
+                (Value > 0))
             {
                 ACPI_ERROR ((AE_INFO,
                     "External method arg count mismatch %s: Current %u, attempted %u",
@@ -1065,9 +1086,8 @@
                 NextExternal->Path,
                 AcpiDmGetObjectTypeName (NextExternal->Type));
 
-            AcpiOsPrintf (
-                ")    // Warning: Unresolved Method, "
-                "guessing %u arguments (may be incorrect, see warning above)\n",
+            AcpiOsPrintf (")    // Warning: Unresolved method, "
+                "guessing %u arguments\n",
                 NextExternal->Value);
 
             NextExternal->Flags |= ACPI_EXT_EXTERNAL_EMITTED;
@@ -1265,12 +1285,24 @@
                 "     * were not specified. This resulting disassembler output file may not\n"
                 "     * compile because the disassembler did not know how many arguments\n"
                 "     * to assign to these methods. To specify the tables needed to resolve\n"
-                "     * external control method references, use the one of the following\n"
-                "     * example iASL invocations:\n"
-                "     *     iasl -e <ssdt1.aml,ssdt2.aml...> -d <dsdt.aml>\n"
-                "     *     iasl -e <dsdt.aml,ssdt2.aml...> -d <ssdt1.aml>\n"
+                "     * external control method references, the -e option can be used to\n"
+                "     * specify the filenames. Example iASL invocations:\n"
+                "     *     iasl -e ssdt1.aml ssdt2.aml ssdt3.aml -d dsdt.aml\n"
+                "     *     iasl -e dsdt.aml ssdt2.aml -d ssdt1.aml\n"
+                "     *     iasl -e ssdt*.aml -d dsdt.aml\n"
+                "     *\n"
+                "     * In addition, the -fe option can be used to specify a file containing\n"
+                "     * control method external declarations with the associated method\n"
+                "     * argument counts. Each line of the file must be of the form:\n"
+                "     *     External (<method pathname>, MethodObj, <argument count>)\n"
+                "     * Invocation:\n"
+                "     *     iasl -fe refs.txt -d dsdt.aml\n"
+                "     *\n"
+                "     * The following methods were unresolved and many not compile properly\n"
+                "     * because the disassembler had to guess at the number of arguments\n"
+                "     * required for each:\n"
                 "     */\n",
-                AcpiGbl_NumExternalMethods);
+               AcpiGbl_NumExternalMethods);
         }
         else if (AcpiGbl_NumExternalMethods != AcpiGbl_ResolvedExternalMethods)
         {
@@ -1279,10 +1311,21 @@
             AcpiOsPrintf ("    /*\n"
                 "     * iASL Warning: There were %u external control methods found during\n"
                 "     * disassembly, but only %u %s resolved (%u unresolved). Additional\n"
-                "     * ACPI tables are required to properly disassemble the code. This\n"
+                "     * ACPI tables may be required to properly disassemble the code. This\n"
                 "     * resulting disassembler output file may not compile because the\n"
                 "     * disassembler did not know how many arguments to assign to the\n"
                 "     * unresolved methods.\n"
+                "     *\n"
+                "     * If necessary, the -fe option can be used to specify a file containing\n"
+                "     * control method external declarations with the associated method\n"
+                "     * argument counts. Each line of the file must be of the form:\n"
+                "     *     External (<method pathname>, MethodObj, <argument count>)\n"
+                "     * Invocation:\n"
+                "     *     iasl -fe refs.txt -d dsdt.aml\n"
+                "     *\n"
+                "     * The following methods were unresolved and many not compile properly\n"
+                "     * because the disassembler had to guess at the number of arguments\n"
+                "     * required for each:\n"
                 "     */\n",
                 AcpiGbl_NumExternalMethods, AcpiGbl_ResolvedExternalMethods,
                 (AcpiGbl_ResolvedExternalMethods > 1 ? "were" : "was"),
@@ -1301,10 +1344,18 @@
                 "were not specified. The resulting disassembler output file may not\n"
                 "compile because the disassembler did not know how many arguments\n"
                 "to assign to these methods. To specify the tables needed to resolve\n"
-                "external control method references, use the one of the following\n"
-                "example iASL invocations:\n"
-                "    iasl -e <ssdt1.aml,ssdt2.aml...> -d <dsdt.aml>\n"
-                "    iasl -e <dsdt.aml,ssdt2.aml...> -d <ssdt1.aml>\n",
+                "external control method references, the -e option can be used to\n"
+                "specify the filenames. Example iASL invocations:\n"
+                "    iasl -e ssdt1.aml ssdt2.aml ssdt3.aml -d dsdt.aml\n"
+                "    iasl -e dsdt.aml ssdt2.aml -d ssdt1.aml\n"
+                "    iasl -e ssdt*.aml -d dsdt.aml\n"
+                "\n"
+                "In addition, the -fe option can be used to specify a file containing\n"
+                "control method external declarations with the associated method\n"
+                "argument counts. Each line of the file must be of the form:\n"
+                "    External (<method pathname>, MethodObj, <argument count>)\n"
+                "Invocation:\n"
+                "    iasl -fe refs.txt -d dsdt.aml\n",
                 AcpiGbl_NumExternalMethods);
         }
         else if (AcpiGbl_NumExternalMethods != AcpiGbl_ResolvedExternalMethods)
@@ -1314,10 +1365,17 @@
             fprintf (stderr, "\n"
                 "iASL Warning: There were %u external control methods found during\n"
                 "disassembly, but only %u %s resolved (%u unresolved). Additional\n"
-                "ACPI tables are required to properly disassemble the code. The\n"
+                "ACPI tables may be required to properly disassemble the code. The\n"
                 "resulting disassembler output file may not compile because the\n"
                 "disassembler did not know how many arguments to assign to the\n"
-                "unresolved methods.\n",
+                "unresolved methods.\n"
+                "\n"
+                "If necessary, the -fe option can be used to specify a file containing\n"
+                "control method external declarations with the associated method\n"
+                "argument counts. Each line of the file must be of the form:\n"
+                "    External (<method pathname>, MethodObj, <argument count>)\n"
+                "Invocation:\n"
+                "    iasl -fe refs.txt -d dsdt.aml\n",
                 AcpiGbl_NumExternalMethods, AcpiGbl_ResolvedExternalMethods,
                 (AcpiGbl_ResolvedExternalMethods > 1 ? "were" : "was"),
                 (AcpiGbl_NumExternalMethods - AcpiGbl_ResolvedExternalMethods));
--- a/sys/external/bsd/acpica/dist/common/dmrestag.c	Sat Oct 25 19:08:48 2014 +0000
+++ b/sys/external/bsd/acpica/dist/common/dmrestag.c	Sat Oct 25 20:57:55 2014 +0000
@@ -5,7 +5,7 @@
  *****************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2013, Intel Corp.
+ * Copyright (C) 2000 - 2014, Intel Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,7 +41,6 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-
 #include "acpi.h"
 #include "accommon.h"
 #include "acparser.h"
--- a/sys/external/bsd/acpica/dist/common/dmtable.c	Sat Oct 25 19:08:48 2014 +0000
+++ b/sys/external/bsd/acpica/dist/common/dmtable.c	Sat Oct 25 20:57:55 2014 +0000
@@ -5,7 +5,7 @@
  *****************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2013, Intel Corp.
+ * Copyright (C) 2000 - 2014, Intel Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -87,9 +87,21 @@
     "Reserved Memory Region",
     "Root Port ATS Capability",
     "Remapping Hardware Static Affinity",
+    "ACPI Namespace Device Declaration",
     "Unknown SubTable Type"         /* Reserved */
 };
 
+static const char           *AcpiDmDmarScope[] =
+{
+    "Reserved value",
+    "PCI Endpoint Device",
+    "PCI Bridge Device",
+    "IOAPIC Device",
+    "Message-capable HPET Device",
+    "Namespace Device",
+    "Unknown Scope Type"            /* Reserved */
+};
+
 static const char           *AcpiDmEinjActions[] =
 {
     "Begin Operation",
@@ -160,6 +172,13 @@
     "Unknown Instruction"
 };
 
+static const char           *AcpiDmGtdtSubnames[] =
+{
+    "Generic Timer Block",
+    "Generic Watchdog Timer",
+    "Unknown SubTable Type"         /* Reserved */
+};
+
 static const char           *AcpiDmHestSubnames[] =
 {
     "IA-32 Machine Check Exception",
@@ -189,25 +208,28 @@
 
 static const char           *AcpiDmMadtSubnames[] =
 {
-    "Processor Local APIC",         /* ACPI_MADT_TYPE_LOCAL_APIC */
-    "I/O APIC",                     /* ACPI_MADT_TYPE_IO_APIC */
-    "Interrupt Source Override",    /* ACPI_MADT_TYPE_INTERRUPT_OVERRIDE */
-    "NMI Source",                   /* ACPI_MADT_TYPE_NMI_SOURCE */
-    "Local APIC NMI",               /* ACPI_MADT_TYPE_LOCAL_APIC_NMI */
-    "Local APIC Address Override",  /* ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE */
-    "I/O SAPIC",                    /* ACPI_MADT_TYPE_IO_SAPIC */
-    "Local SAPIC",                  /* ACPI_MADT_TYPE_LOCAL_SAPIC */
-    "Platform Interrupt Sources",   /* ACPI_MADT_TYPE_INTERRUPT_SOURCE */
-    "Processor Local x2APIC",       /* ACPI_MADT_TYPE_LOCAL_X2APIC */
-    "Local x2APIC NMI",             /* ACPI_MADT_TYPE_LOCAL_X2APIC_NMI */
-    "Generic Interrupt Controller", /* ACPI_MADT_GENERIC_INTERRUPT */
-    "Generic Interrupt Distributor",/* ACPI_MADT_GENERIC_DISTRIBUTOR */
-    "Unknown SubTable Type"         /* Reserved */
+    "Processor Local APIC",             /* ACPI_MADT_TYPE_LOCAL_APIC */
+    "I/O APIC",                         /* ACPI_MADT_TYPE_IO_APIC */
+    "Interrupt Source Override",        /* ACPI_MADT_TYPE_INTERRUPT_OVERRIDE */
+    "NMI Source",                       /* ACPI_MADT_TYPE_NMI_SOURCE */
+    "Local APIC NMI",                   /* ACPI_MADT_TYPE_LOCAL_APIC_NMI */
+    "Local APIC Address Override",      /* ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE */
+    "I/O SAPIC",                        /* ACPI_MADT_TYPE_IO_SAPIC */
+    "Local SAPIC",                      /* ACPI_MADT_TYPE_LOCAL_SAPIC */
+    "Platform Interrupt Sources",       /* ACPI_MADT_TYPE_INTERRUPT_SOURCE */
+    "Processor Local x2APIC",           /* ACPI_MADT_TYPE_LOCAL_X2APIC */
+    "Local x2APIC NMI",                 /* ACPI_MADT_TYPE_LOCAL_X2APIC_NMI */
+    "Generic Interrupt Controller",     /* ACPI_MADT_GENERIC_INTERRUPT */
+    "Generic Interrupt Distributor",    /* ACPI_MADT_GENERIC_DISTRIBUTOR */
+    "Generic MSI Frame",                /* ACPI_MADT_GENERIC_MSI_FRAME */
+    "Generic Interrupt Redistributor",  /* ACPI_MADT_GENERIC_REDISTRIBUTOR */
+    "Unknown SubTable Type"             /* Reserved */
 };
 
 static const char           *AcpiDmPcctSubnames[] =
 {
     "Generic Communications Subspace",  /* ACPI_PCCT_TYPE_GENERIC_SUBSPACE */
+    "HW-Reduced Communications Subspace",
     "Unknown SubTable Type"             /* Reserved */
 };
 
@@ -231,6 +253,7 @@
     "Processor Local APIC/SAPIC Affinity",
     "Memory Affinity",
     "Processor Local x2APIC Affinity",
+    "GICC Affinity",
     "Unknown SubTable Type"         /* Reserved */
 };
 
@@ -241,6 +264,12 @@
     "Unknown SubTable Type"         /* Reserved */
 };
 
+static const char           *AcpiDmLpitSubnames[] =
+{
+    "Native C-state Idle Structure",
+    "Simple I/O Idle Structure",
+    "Unknown SubTable Type"         /* Reserved */
+};
 
 #define ACPI_FADT_PM_RESERVED       9
 
@@ -300,10 +329,11 @@
     {ACPI_SIG_ERST, NULL,                   AcpiDmDumpErst, DtCompileErst,  TemplateErst,   "Error Record Serialization Table"},
     {ACPI_SIG_FADT, NULL,                   AcpiDmDumpFadt, DtCompileFadt,  TemplateFadt,   "Fixed ACPI Description Table (FADT)"},
     {ACPI_SIG_FPDT, NULL,                   AcpiDmDumpFpdt, DtCompileFpdt,  TemplateFpdt,   "Firmware Performance Data Table"},
-    {ACPI_SIG_GTDT, AcpiDmTableInfoGtdt,    NULL,           NULL,           TemplateGtdt,   "Generic Timer Description Table"},
+    {ACPI_SIG_GTDT, NULL,                   AcpiDmDumpGtdt, DtCompileGtdt,  TemplateGtdt,   "Generic Timer Description Table"},
     {ACPI_SIG_HEST, NULL,                   AcpiDmDumpHest, DtCompileHest,  TemplateHest,   "Hardware Error Source Table"},
     {ACPI_SIG_HPET, AcpiDmTableInfoHpet,    NULL,           NULL,           TemplateHpet,   "High Precision Event Timer table"},
     {ACPI_SIG_IVRS, NULL,                   AcpiDmDumpIvrs, DtCompileIvrs,  TemplateIvrs,   "I/O Virtualization Reporting Structure"},
+    {ACPI_SIG_LPIT, NULL,                   AcpiDmDumpLpit, DtCompileLpit,  TemplateLpit,   "Low Power Idle Table"},
     {ACPI_SIG_MADT, NULL,                   AcpiDmDumpMadt, DtCompileMadt,  TemplateMadt,   "Multiple APIC Description Table (MADT)"},
     {ACPI_SIG_MCFG, NULL,                   AcpiDmDumpMcfg, DtCompileMcfg,  TemplateMcfg,   "Memory Mapped Configuration table"},
     {ACPI_SIG_MCHI, AcpiDmTableInfoMchi,    NULL,           NULL,           TemplateMchi,   "Management Controller Host Interface table"},
@@ -698,6 +728,7 @@
         case ACPI_DMT_SPACEID:
         case ACPI_DMT_ACCWIDTH:
         case ACPI_DMT_IVRS:
+        case ACPI_DMT_GTDT:
         case ACPI_DMT_MADT:
         case ACPI_DMT_PCCT:
         case ACPI_DMT_PMTT:
@@ -709,6 +740,7 @@
         case ACPI_DMT_EINJINST:
         case ACPI_DMT_ERSTACT:
         case ACPI_DMT_ERSTINST:
+        case ACPI_DMT_DMAR_SCOPE:
 
             ByteLength = 1;
             break;
@@ -729,6 +761,7 @@
         case ACPI_DMT_NAME4:
         case ACPI_DMT_SIG:
         case ACPI_DMT_SLIC:
+        case ACPI_DMT_LPIT:
 
             ByteLength = 4;
             break;
@@ -1039,6 +1072,19 @@
             AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target), AcpiDmDmarSubnames[Temp16]);
             break;
 
+        case ACPI_DMT_DMAR_SCOPE:
+
+            /* DMAR device scope types */
+
+            Temp8 = *Target;
+            if (Temp8 > ACPI_DMAR_SCOPE_TYPE_RESERVED)
+            {
+                Temp8 = ACPI_DMAR_SCOPE_TYPE_RESERVED;
+            }
+
+            AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmDmarScope[Temp8]);
+            break;
+
         case ACPI_DMT_EINJACT:
 
             /* EINJ Action types */
@@ -1091,6 +1137,19 @@
             AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmErstInstructions[Temp8]);
             break;
 
+        case ACPI_DMT_GTDT:
+
+            /* GTDT subtable types */
+
+            Temp8 = *Target;
+            if (Temp8 > ACPI_GTDT_TYPE_RESERVED)
+            {
+                Temp8 = ACPI_GTDT_TYPE_RESERVED;
+            }
+
+            AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmGtdtSubnames[Temp8]);
+            break;
+
         case ACPI_DMT_HEST:
 
             /* HEST subtable types */
@@ -1232,6 +1291,32 @@
             AcpiOsPrintf (UINT8_FORMAT, *Target, Name);
             break;
 
+        case ACPI_DMT_LPIT:
+
+            /* LPIT subtable types */
+
+            Temp8 = *Target;
+            switch (Temp8)
+            {
+            case ACPI_LPIT_TYPE_NATIVE_CSTATE:
+
+                Name = AcpiDmLpitSubnames[0];
+                break;
+
+            case ACPI_LPIT_TYPE_SIMPLE_IO:
+
+                Name = AcpiDmLpitSubnames[1];
+                break;
+
+            default:
+
+                Name = AcpiDmLpitSubnames[2];
+                break;
+            }
+
+            AcpiOsPrintf (UINT32_FORMAT, *Target, Name);
+            break;
+
         case ACPI_DMT_EXIT:
 
             return (AE_OK);
--- a/sys/external/bsd/acpica/dist/common/dmtbdump.c	Sat Oct 25 19:08:48 2014 +0000
+++ b/sys/external/bsd/acpica/dist/common/dmtbdump.c	Sat Oct 25 20:57:55 2014 +0000
@@ -5,7 +5,7 @@
  *****************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2013, Intel Corp.
+ * Copyright (C) 2000 - 2014, Intel Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -419,12 +419,12 @@
     UINT8                   Type;
 
 
-    /* No main table, only sub-tables */
+    /* No main table, only subtables */
 
     SubTable = ACPI_ADD_PTR (ACPI_ASF_INFO, Table, Offset);
     while (Offset < Table->Length)
     {
-        /* Common sub-table header */
+        /* Common subtable header */
 
         Status = AcpiDmDumpTable (Table->Length, Offset, SubTable,
                     SubTable->Header.Length, AcpiDmTableInfoAsfHdr);
@@ -479,7 +479,7 @@
 
         default:
 
-            AcpiOsPrintf ("\n**** Unknown ASF sub-table type 0x%X\n", SubTable->Header.Type);
+            AcpiOsPrintf ("\n**** Unknown ASF subtable type 0x%X\n", SubTable->Header.Type);
             return;
         }
 
@@ -541,7 +541,7 @@
 
         AcpiOsPrintf ("\n");
 
-        /* Point to next sub-table */
+        /* Point to next subtable */
 
         if (!SubTable->Header.Length)
         {
@@ -586,7 +586,7 @@
         return;
     }
 
-    /* Sub-tables */
+    /* Subtables */
 
     SubTable = ACPI_ADD_PTR (ACPI_CPEP_POLLING, Table, Offset);
     while (Offset < Table->Length)
@@ -599,7 +599,7 @@
             return;
         }
 
-        /* Point to next sub-table */
+        /* Point to next subtable */
 
         Offset += SubTable->Header.Length;
         SubTable = ACPI_ADD_PTR (ACPI_CPEP_POLLING, SubTable,
@@ -638,7 +638,7 @@
 
     /* The main table only contains the ACPI header, thus already handled */
 
-    /* Sub-tables (Resource Groups) */
+    /* Subtables (Resource Groups) */
 
     SubTable = ACPI_ADD_PTR (ACPI_CSRT_GROUP, Table, Offset);
     while (Offset < Table->Length)
@@ -702,7 +702,7 @@
                         SubSubTable->Length);
         }
 
-        /* Point to next sub-table */
+        /* Point to next subtable */
 
         Offset += SubTable->Length;
         SubTable = ACPI_ADD_PTR (ACPI_CSRT_GROUP, SubTable,
@@ -746,7 +746,7 @@
         return;
     }
 
-    /* Sub-tables */
+    /* Subtables */
 
     SubTable = ACPI_ADD_PTR (ACPI_DBG2_DEVICE, Table, Offset);
     while (Offset < Table->Length)
@@ -815,7 +815,7 @@
                 Offset + SubTable->OemDataOffset, "OEM Data");
         }
 
-        /* Point to next sub-table */
+        /* Point to next subtable */
 
         Offset += SubTable->Length;
         SubTable = ACPI_ADD_PTR (ACPI_DBG2_DEVICE, SubTable,
@@ -861,12 +861,12 @@
         return;
     }
 
-    /* Sub-tables */
+    /* Subtables */
 
     SubTable = ACPI_ADD_PTR (ACPI_DMAR_HEADER, Table, Offset);
     while (Offset < Table->Length)
     {
-        /* Common sub-table header */
+        /* Common subtable header */
 
         AcpiOsPrintf ("\n");
         Status = AcpiDmDumpTable (Length, Offset, SubTable,
@@ -891,21 +891,27 @@
             ScopeOffset = sizeof (ACPI_DMAR_RESERVED_MEMORY);
             break;
 
-        case ACPI_DMAR_TYPE_ATSR:
+        case ACPI_DMAR_TYPE_ROOT_ATS:
 
             InfoTable = AcpiDmTableInfoDmar2;
             ScopeOffset = sizeof (ACPI_DMAR_ATSR);
             break;
 
-        case ACPI_DMAR_HARDWARE_AFFINITY:
+        case ACPI_DMAR_TYPE_HARDWARE_AFFINITY:
 
             InfoTable = AcpiDmTableInfoDmar3;
             ScopeOffset = sizeof (ACPI_DMAR_RHSA);
             break;
 
+        case ACPI_DMAR_TYPE_NAMESPACE:
+
+            InfoTable = AcpiDmTableInfoDmar4;
+            ScopeOffset = sizeof (ACPI_DMAR_ANDD);
+            break;
+
         default:
 
-            AcpiOsPrintf ("\n**** Unknown DMAR sub-table type 0x%X\n\n", SubTable->Type);
+            AcpiOsPrintf ("\n**** Unknown DMAR subtable type 0x%X\n\n", SubTable->Type);
             return;
         }
 
@@ -916,7 +922,16 @@
             return;
         }
 
-        /* Dump the device scope entries (if any) */
+        /*
+         * Dump the optional device scope entries
+         */
+        if ((SubTable->Type == ACPI_DMAR_TYPE_HARDWARE_AFFINITY) ||
+            (SubTable->Type == ACPI_DMAR_TYPE_NAMESPACE))
+        {
+            /* These types do not support device scopes */
+
+            goto NextSubtable;
+        }
 
         ScopeTable = ACPI_ADD_PTR (ACPI_DMAR_DEVICE_SCOPE, SubTable, ScopeOffset);
         while (ScopeOffset < SubTable->Length)
@@ -956,7 +971,8 @@
                 ScopeTable, ScopeTable->Length);
         }
 
-        /* Point to next sub-table */
+NextSubtable:
+        /* Point to next subtable */
 
         Offset += SubTable->Length;
         SubTable = ACPI_ADD_PTR (ACPI_DMAR_HEADER, SubTable, SubTable->Length);
@@ -995,7 +1011,7 @@
         return;
     }
 
-    /* Sub-tables */
+    /* Subtables */
 
     SubTable = ACPI_ADD_PTR (ACPI_WHEA_HEADER, Table, Offset);
     while (Offset < Table->Length)
@@ -1008,7 +1024,7 @@
             return;
         }
 
-        /* Point to next sub-table (each subtable is of fixed length) */
+        /* Point to next subtable (each subtable is of fixed length) */
 
         Offset += sizeof (ACPI_WHEA_HEADER);
         SubTable = ACPI_ADD_PTR (ACPI_WHEA_HEADER, SubTable,
@@ -1048,7 +1064,7 @@
         return;
     }
 
-    /* Sub-tables */
+    /* Subtables */
 
     SubTable = ACPI_ADD_PTR (ACPI_WHEA_HEADER, Table, Offset);
     while (Offset < Table->Length)
@@ -1061,7 +1077,7 @@
             return;
         }
 
-        /* Point to next sub-table (each subtable is of fixed length) */
+        /* Point to next subtable (each subtable is of fixed length) */
 
         Offset += sizeof (ACPI_WHEA_HEADER);
         SubTable = ACPI_ADD_PTR (ACPI_WHEA_HEADER, SubTable,
@@ -1096,12 +1112,12 @@
 
     /* There is no main table (other than the standard ACPI header) */
 
-    /* Sub-tables */
+    /* Subtables */
 
     SubTable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, Table, Offset);
     while (Offset < Table->Length)
     {
-        /* Common sub-table header */
+        /* Common subtable header */
 
         AcpiOsPrintf ("\n");
         Status = AcpiDmDumpTable (Length, Offset, SubTable,
@@ -1125,7 +1141,7 @@
 
         default:
 
-            AcpiOsPrintf ("\n**** Unknown FPDT sub-table type 0x%X\n\n", SubTable->Type);
+            AcpiOsPrintf ("\n**** Unknown FPDT subtable type 0x%X\n\n", SubTable->Type);
 
             /* Attempt to continue */
 
@@ -1145,7 +1161,7 @@
         }
 
 NextSubTable:
-        /* Point to next sub-table */
+        /* Point to next subtable */
 
         Offset += SubTable->Length;
         SubTable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, SubTable, SubTable->Length);
@@ -1155,6 +1171,123 @@
 
 /*******************************************************************************
  *
+ * FUNCTION:    AcpiDmDumpGtdt
+ *
+ * PARAMETERS:  Table               - A GTDT table
+ *
+ * RETURN:      None
+ *
+ * DESCRIPTION: Format the contents of a GTDT. This table type consists
+ *              of an open-ended number of subtables.
+ *
+ ******************************************************************************/
+
+void
+AcpiDmDumpGtdt (
+    ACPI_TABLE_HEADER       *Table)
+{
+    ACPI_STATUS             Status;
+    ACPI_GTDT_HEADER        *SubTable;
+    UINT32                  Length = Table->Length;
+    UINT32                  Offset = sizeof (ACPI_TABLE_GTDT);
+    ACPI_DMTABLE_INFO       *InfoTable;
+    UINT32                  SubTableLength;
+    UINT32                  GtCount;
+    ACPI_GTDT_TIMER_ENTRY   *GtxTable;
+
+
+    /* Main table */
+
+    Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoGtdt);
+    if (ACPI_FAILURE (Status))
+    {
+        return;
+    }
+
+    /* Subtables */
+
+    SubTable = ACPI_ADD_PTR (ACPI_GTDT_HEADER, Table, Offset);
+    while (Offset < Table->Length)
+    {
+        /* Common subtable header */
+
+        AcpiOsPrintf ("\n");
+        Status = AcpiDmDumpTable (Length, Offset, SubTable,
+                    SubTable->Length, AcpiDmTableInfoGtdtHdr);
+        if (ACPI_FAILURE (Status))
+        {
+            return;
+        }
+
+        GtCount = 0;
+        switch (SubTable->Type)
+        {
+        case ACPI_GTDT_TYPE_TIMER_BLOCK:
+
+            SubTableLength = sizeof (ACPI_GTDT_TIMER_BLOCK);
+            GtCount = (ACPI_CAST_PTR (ACPI_GTDT_TIMER_BLOCK,
+                        SubTable))->TimerCount;
+
+            InfoTable = AcpiDmTableInfoGtdt0;
+            break;
+
+        case ACPI_GTDT_TYPE_WATCHDOG:
+
+            SubTableLength = sizeof (ACPI_GTDT_WATCHDOG);
+
+            InfoTable = AcpiDmTableInfoGtdt1;
+            break;
+
+        default:
+
+            /* Cannot continue on unknown type - no length */
+
+            AcpiOsPrintf ("\n**** Unknown GTDT subtable type 0x%X\n", SubTable->Type);
+            return;
+        }
+
+        Status = AcpiDmDumpTable (Length, Offset, SubTable,
+                    SubTable->Length, InfoTable);
+        if (ACPI_FAILURE (Status))
+        {
+            return;
+        }
+
+        /* Point to end of current subtable (each subtable above is of fixed length) */
+
+        Offset += SubTableLength;
+
+        /* If there are any Gt Timer Blocks from above, dump them now */
+
+        if (GtCount)
+        {
+            GtxTable = ACPI_ADD_PTR (ACPI_GTDT_TIMER_ENTRY, SubTable, SubTableLength);
+            SubTableLength += GtCount * sizeof (ACPI_GTDT_TIMER_ENTRY);
+
+            while (GtCount)
+            {
+                AcpiOsPrintf ("\n");
+                Status = AcpiDmDumpTable (Length, Offset, GtxTable,
+                            sizeof (ACPI_GTDT_TIMER_ENTRY), AcpiDmTableInfoGtdt0a);
+                if (ACPI_FAILURE (Status))
+                {
+                    return;
+                }
+                Offset += sizeof (ACPI_GTDT_TIMER_ENTRY);
+                GtxTable++;
+                GtCount--;
+            }
+        }
+
+        /* Point to next subtable */
+
+        SubTable = ACPI_ADD_PTR (ACPI_GTDT_HEADER, SubTable, SubTableLength);
+    }
+}
+
+
+/*******************************************************************************
+ *
  * FUNCTION:    AcpiDmDumpHest
  *
  * PARAMETERS:  Table               - A HEST table
@@ -1188,7 +1321,7 @@
         return;
     }
 
-    /* Sub-tables */
+    /* Subtables */
 
     SubTable = ACPI_ADD_PTR (ACPI_HEST_HEADER, Table, Offset);
     while (Offset < Table->Length)
@@ -1246,7 +1379,7 @@
 
             /* Cannot continue on unknown type - no length */
 
-            AcpiOsPrintf ("\n**** Unknown HEST sub-table type 0x%X\n", SubTable->Type);
+            AcpiOsPrintf ("\n**** Unknown HEST subtable type 0x%X\n", SubTable->Type);
             return;
         }
 
@@ -1284,7 +1417,7 @@
             }
         }
 
-        /* Point to next sub-table */
+        /* Point to next subtable */
 
         SubTable = ACPI_ADD_PTR (ACPI_HEST_HEADER, SubTable, SubTableLength);
     }
@@ -1327,12 +1460,12 @@
         return;
     }
 
-    /* Sub-tables */
+    /* Subtables */
 
     SubTable = ACPI_ADD_PTR (ACPI_IVRS_HEADER, Table, Offset);
     while (Offset < Table->Length)
     {
-        /* Common sub-table header */
+        /* Common subtable header */
 
         AcpiOsPrintf ("\n");
         Status = AcpiDmDumpTable (Table->Length, Offset, SubTable,
@@ -1358,7 +1491,7 @@
 
         default:
 
-            AcpiOsPrintf ("\n**** Unknown IVRS sub-table type 0x%X\n",
+            AcpiOsPrintf ("\n**** Unknown IVRS subtable type 0x%X\n",
                 SubTable->Type);
 
             /* Attempt to continue */
@@ -1461,7 +1594,7 @@
         }
 
 NextSubTable:
-        /* Point to next sub-table */
+        /* Point to next subtable */
 
         Offset += SubTable->Length;
         SubTable = ACPI_ADD_PTR (ACPI_IVRS_HEADER, SubTable, SubTable->Length);
@@ -1471,6 +1604,85 @@
 
 /*******************************************************************************
  *
+ * FUNCTION:    AcpiDmDumpLpit
+ *
+ * PARAMETERS:  Table               - A LPIT table
+ *
+ * RETURN:      None
+ *
+ * DESCRIPTION: Format the contents of a LPIT. This table type consists
+ *              of an open-ended number of subtables. Note: There are no
+ *              entries in the main table. An LPIT consists of the table
+ *              header and then subtables only.
+ *
+ ******************************************************************************/
+
+void
+AcpiDmDumpLpit (
+    ACPI_TABLE_HEADER       *Table)
+{
+    ACPI_STATUS             Status;
+    ACPI_LPIT_HEADER        *SubTable;
+    UINT32                  Length = Table->Length;
+    UINT32                  Offset = sizeof (ACPI_TABLE_LPIT);
+    ACPI_DMTABLE_INFO       *InfoTable;
+    UINT32                  SubTableLength;
+
+
+    /* Subtables */
+
+    SubTable = ACPI_ADD_PTR (ACPI_LPIT_HEADER, Table, Offset);
+    while (Offset < Table->Length)
+    {
+        /* Common subtable header */
+
+        Status = AcpiDmDumpTable (Length, Offset, SubTable,
+                    sizeof (ACPI_LPIT_HEADER), AcpiDmTableInfoLpitHdr);
+        if (ACPI_FAILURE (Status))
+        {
+            return;
+        }
+
+        switch (SubTable->Type)
+        {
+        case ACPI_LPIT_TYPE_NATIVE_CSTATE:
+
+            InfoTable = AcpiDmTableInfoLpit0;
+            SubTableLength = sizeof (ACPI_LPIT_NATIVE);
+            break;
+
+        case ACPI_LPIT_TYPE_SIMPLE_IO:
+
+            InfoTable = AcpiDmTableInfoLpit1;
+            SubTableLength = sizeof (ACPI_LPIT_IO);
+            break;
+
+        default:
+
+            /* Cannot continue on unknown type - no length */
+
+            AcpiOsPrintf ("\n**** Unknown LPIT subtable type 0x%X\n", SubTable->Type);
+            return;
+        }
+
+        Status = AcpiDmDumpTable (Length, Offset, SubTable,
+                    SubTableLength, InfoTable);
+        if (ACPI_FAILURE (Status))
+        {
+            return;
+        }
+        AcpiOsPrintf ("\n");
+
+        /* Point to next subtable */
+
+        Offset += SubTableLength;
+        SubTable = ACPI_ADD_PTR (ACPI_LPIT_HEADER, SubTable, SubTableLength);
+    }
+}
+
+
+/*******************************************************************************
+ *
  * FUNCTION:    AcpiDmDumpMadt
  *
  * PARAMETERS:  Table               - A MADT table
@@ -1501,12 +1713,12 @@
         return;
     }
 
-    /* Sub-tables */
+    /* Subtables */
 
     SubTable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Table, Offset);
     while (Offset < Table->Length)
     {
-        /* Common sub-table header */
+        /* Common subtable header */
 
         AcpiOsPrintf ("\n");
         Status = AcpiDmDumpTable (Length, Offset, SubTable,
@@ -1583,9 +1795,19 @@
             InfoTable = AcpiDmTableInfoMadt12;
             break;
 
+        case ACPI_MADT_TYPE_GENERIC_MSI_FRAME:
+
+            InfoTable = AcpiDmTableInfoMadt13;
+            break;
+
+        case ACPI_MADT_TYPE_GENERIC_REDISTRIBUTOR:
+
+            InfoTable = AcpiDmTableInfoMadt14;
+            break;
+
         default:
 
-            AcpiOsPrintf ("\n**** Unknown MADT sub-table type 0x%X\n\n", SubTable->Type);
+            AcpiOsPrintf ("\n**** Unknown MADT subtable type 0x%X\n\n", SubTable->Type);
 
             /* Attempt to continue */
 
@@ -1605,7 +1827,7 @@
         }
 
 NextSubTable:
-        /* Point to next sub-table */
+        /* Point to next subtable */
 
         Offset += SubTable->Length;
         SubTable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, SubTable, SubTable->Length);
@@ -1642,7 +1864,7 @@
         return;
     }
 
-    /* Sub-tables */
+    /* Subtables */
 
     SubTable = ACPI_ADD_PTR (ACPI_MCFG_ALLOCATION, Table, Offset);
     while (Offset < Table->Length)
@@ -1662,7 +1884,7 @@
             return;
         }
 
-        /* Point to next sub-table (each subtable is of fixed length) */
+        /* Point to next subtable (each subtable is of fixed length) */
 
         Offset += sizeof (ACPI_MCFG_ALLOCATION);
         SubTable = ACPI_ADD_PTR (ACPI_MCFG_ALLOCATION, SubTable,
@@ -1844,12 +2066,12 @@
         return;
     }
 
-    /* Sub-tables */
+    /* Subtables */
 
     SubTable = ACPI_ADD_PTR (ACPI_MSCT_PROXIMITY, Table, Offset);
     while (Offset < Table->Length)
     {
-        /* Common sub-table header */
+        /* Common subtable header */
 
         AcpiOsPrintf ("\n");
         Status = AcpiDmDumpTable (Table->Length, Offset, SubTable,
@@ -1859,7 +2081,7 @@
             return;
         }
 
-        /* Point to next sub-table */
+        /* Point to next subtable */
 
         Offset += sizeof (ACPI_MSCT_PROXIMITY);
         SubTable = ACPI_ADD_PTR (ACPI_MSCT_PROXIMITY, SubTable, sizeof (ACPI_MSCT_PROXIMITY));
@@ -1896,12 +2118,12 @@
         return;
     }
 
-    /* Sub-tables */
+    /* Subtables */
 
     SubTable = ACPI_ADD_PTR (ACPI_MTMR_ENTRY, Table, Offset);
     while (Offset < Table->Length)
     {
-        /* Common sub-table header */
+        /* Common subtable header */
 
         AcpiOsPrintf ("\n");
         Status = AcpiDmDumpTable (Table->Length, Offset, SubTable,
@@ -1911,7 +2133,7 @@
             return;
         }
 
-        /* Point to next sub-table */
+        /* Point to next subtable */
 
         Offset += sizeof (ACPI_MTMR_ENTRY);
         SubTable = ACPI_ADD_PTR (ACPI_MTMR_ENTRY, SubTable, sizeof (ACPI_MTMR_ENTRY));
@@ -1938,6 +2160,7 @@
 {
     ACPI_STATUS             Status;
     ACPI_PCCT_SUBSPACE      *SubTable;
+    ACPI_DMTABLE_INFO       *InfoTable;
     UINT32                  Length = Table->Length;
     UINT32                  Offset = sizeof (ACPI_TABLE_PCCT);
 
@@ -1965,10 +2188,20 @@
             return;
         }
 
-        /* ACPI 5.0: Only one type of PCCT subtable is supported */
-
-        if (SubTable->Header.Type != ACPI_PCCT_TYPE_GENERIC_SUBSPACE)
+        switch (SubTable->Header.Type)
         {
+        case ACPI_PCCT_TYPE_GENERIC_SUBSPACE:
+
+            InfoTable = AcpiDmTableInfoPcct0;
+            break;
+
+        case ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE:
+
+            InfoTable = AcpiDmTableInfoPcct1;
+            break;
+
+        default:
+
             AcpiOsPrintf (
                 "\n**** Unexpected or unknown PCCT subtable type 0x%X\n\n",
                 SubTable->Header.Type);
@@ -1977,7 +2210,7 @@
 
         AcpiOsPrintf ("\n");
         Status = AcpiDmDumpTable (Length, Offset, SubTable,
-                    SubTable->Header.Length, AcpiDmTableInfoPcct0);
+                    SubTable->Header.Length, InfoTable);
         if (ACPI_FAILURE (Status))
         {
             return;
@@ -2131,8 +2364,7 @@
             if (DomainCount)
             {
                 AcpiOsPrintf (
-                    "\n**** DomainCount exceeds subtable length\n\n",
-                    MemSubTable->Type);
+                    "\n**** DomainCount exceeds subtable length\n\n");
             }
 
             /* Walk the physical component (DIMM) subtables */
@@ -2232,7 +2464,7 @@
     SubTable = ACPI_ADD_PTR (ACPI_S3PT_HEADER, S3ptTable, Offset);
     while (Offset < S3ptTable->Length)
     {
-        /* Common sub-table header */
+        /* Common subtable header */
 
         AcpiOsPrintf ("\n");
         Status = AcpiDmDumpTable (S3ptTable->Length, Offset, SubTable,
@@ -2256,7 +2488,7 @@
 
         default:
 
-            AcpiOsPrintf ("\n**** Unknown S3PT sub-table type 0x%X\n", SubTable->Type);
+            AcpiOsPrintf ("\n**** Unknown S3PT subtable type 0x%X\n", SubTable->Type);
 
             /* Attempt to continue */
 
@@ -2277,7 +2509,7 @@
         }
 
 NextSubTable:
-        /* Point to next sub-table */
+        /* Point to next subtable */
 
         Offset += SubTable->Length;
         SubTable = ACPI_ADD_PTR (ACPI_S3PT_HEADER, SubTable, SubTable->Length);
@@ -2314,7 +2546,7 @@
     SubTable = ACPI_ADD_PTR (ACPI_SLIC_HEADER, Table, Offset);
     while (Offset < Table->Length)
     {
-        /* Common sub-table header */
+        /* Common subtable header */
 
         AcpiOsPrintf ("\n");
         Status = AcpiDmDumpTable (Table->Length, Offset, SubTable,
@@ -2338,7 +2570,7 @@
 
         default:
 
-            AcpiOsPrintf ("\n**** Unknown SLIC sub-table type 0x%X\n", SubTable->Type);
+            AcpiOsPrintf ("\n**** Unknown SLIC subtable type 0x%X\n", SubTable->Type);
 
             /* Attempt to continue */
 
@@ -2359,7 +2591,7 @@
         }
 
 NextSubTable:
-        /* Point to next sub-table */
+        /* Point to next subtable */
 
         Offset += SubTable->Length;
         SubTable = ACPI_ADD_PTR (ACPI_SLIC_HEADER, SubTable, SubTable->Length);
@@ -2475,12 +2707,12 @@
         return;
     }
 
-    /* Sub-tables */
+    /* Subtables */
 
     SubTable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Table, Offset);
     while (Offset < Table->Length)
     {
-        /* Common sub-table header */
+        /* Common subtable header */
 
         AcpiOsPrintf ("\n");
         Status = AcpiDmDumpTable (Table->Length, Offset, SubTable,
@@ -2507,8 +2739,13 @@
             InfoTable = AcpiDmTableInfoSrat2;
             break;
 
+        case ACPI_SRAT_TYPE_GICC_AFFINITY:
+
+            InfoTable = AcpiDmTableInfoSrat3;
+            break;
+
         default:
-            AcpiOsPrintf ("\n**** Unknown SRAT sub-table type 0x%X\n", SubTable->Type);
+            AcpiOsPrintf ("\n**** Unknown SRAT subtable type 0x%X\n", SubTable->Type);
 
             /* Attempt to continue */
 
@@ -2529,7 +2766,7 @@
         }
 
 NextSubTable:
-        /* Point to next sub-table */
+        /* Point to next subtable */
 
         Offset += SubTable->Length;
         SubTable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, SubTable, SubTable->Length);
@@ -2566,12 +2803,12 @@
         return;
     }
 
-    /* Sub-tables */
+    /* Subtables */
 
     SubTable = ACPI_ADD_PTR (ACPI_VRTC_ENTRY, Table, Offset);
     while (Offset < Table->Length)
     {
-        /* Common sub-table header */
+        /* Common subtable header */
 
         AcpiOsPrintf ("\n");
         Status = AcpiDmDumpTable (Table->Length, Offset, SubTable,
@@ -2581,7 +2818,7 @@
             return;
         }
 
-        /* Point to next sub-table */
+        /* Point to next subtable */
 
         Offset += sizeof (ACPI_VRTC_ENTRY);
         SubTable = ACPI_ADD_PTR (ACPI_VRTC_ENTRY, SubTable, sizeof (ACPI_VRTC_ENTRY));
@@ -2618,12 +2855,12 @@
         return;
     }
 
-    /* Sub-tables */
+    /* Subtables */
 
     SubTable = ACPI_ADD_PTR (ACPI_WDAT_ENTRY, Table, Offset);
     while (Offset < Table->Length)
     {
-        /* Common sub-table header */
+        /* Common subtable header */
 
         AcpiOsPrintf ("\n");
         Status = AcpiDmDumpTable (Table->Length, Offset, SubTable,
@@ -2633,7 +2870,7 @@
             return;
         }
 
-        /* Point to next sub-table */
+        /* Point to next subtable */
 
         Offset += sizeof (ACPI_WDAT_ENTRY);
         SubTable = ACPI_ADD_PTR (ACPI_WDAT_ENTRY, SubTable, sizeof (ACPI_WDAT_ENTRY));
--- a/sys/external/bsd/acpica/dist/common/getopt.c	Sat Oct 25 19:08:48 2014 +0000
+++ b/sys/external/bsd/acpica/dist/common/getopt.c	Sat Oct 25 20:57:55 2014 +0000
@@ -5,7 +5,7 @@
  *****************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2013, Intel Corp.
+ * Copyright (C) 2000 - 2014, Intel Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -51,14 +51,12 @@
  *    "f|"      - Option has required single-char sub-options
  */
 
-#include <stdio.h>
-#include <string.h>
 #include "acpi.h"
 #include "accommon.h"
 #include "acapps.h"
 
 #define ACPI_OPTION_ERROR(msg, badchar) \
-    if (AcpiGbl_Opterr) {fprintf (stderr, "%s%c\n", msg, badchar);}
+    if (AcpiGbl_Opterr) {AcpiLogError ("%s%c\n", msg, badchar);}
 
 
 int                 AcpiGbl_Opterr = 1;
@@ -123,7 +121,7 @@
  * PARAMETERS:  argc, argv          - from main
  *              opts                - options info list
  *
- * RETURN:      Option character or EOF
+ * RETURN:      Option character or ACPI_OPT_END
  *
  * DESCRIPTION: Get the next option
  *
@@ -145,12 +143,12 @@
             argv[AcpiGbl_Optind][0] != '-' ||
             argv[AcpiGbl_Optind][1] == '\0')
         {
-            return (EOF);
+            return (ACPI_OPT_END);
         }
-        else if (strcmp (argv[AcpiGbl_Optind], "--") == 0)
+        else if (ACPI_STRCMP (argv[AcpiGbl_Optind], "--") == 0)
         {
             AcpiGbl_Optind++;
-            return (EOF);
+            return (ACPI_OPT_END);
         }
     }
 
@@ -161,7 +159,7 @@
     /* Make sure that the option is legal */
 
     if (CurrentChar == ':' ||
-       (OptsPtr = strchr (opts, CurrentChar)) == NULL)
+       (OptsPtr = ACPI_STRCHR (opts, CurrentChar)) == NULL)
     {
         ACPI_OPTION_ERROR ("Illegal option: -", CurrentChar);
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/aslascii.c	Sat Oct 25 20:57:55 2014 +0000
@@ -0,0 +1,349 @@
+/******************************************************************************
+ *
+ * Module Name: aslascii - ASCII detection and support routines
+ *
+ *****************************************************************************/
+
+/*
+ * Copyright (C) 2000 - 2014, 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    ("aslascii")
+
+
+/* Local prototypes */
+
+static void
+FlConsumeAnsiComment (
+    FILE                    *Handle,
+    ASL_FILE_STATUS         *Status);
+
+static void
+FlConsumeNewComment (
+    FILE                    *Handle,
+    ASL_FILE_STATUS         *Status);
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    FlCheckForAcpiTable
+ *
+ * PARAMETERS:  Handle              - Open input file
+ *
+ * RETURN:      Status
+ *
+ * DESCRIPTION: Determine if a file seems to be a binary ACPI table, via the
+ *              following checks on what would be the table header:
+ *              0) File must be at least as long as an ACPI_TABLE_HEADER
+ *              1) The header length field must match the file size
+ *              2) Signature, OemId, OemTableId, AslCompilerId must be ASCII
+ *
+ ******************************************************************************/
+
+ACPI_STATUS
+FlCheckForAcpiTable (
+    FILE                    *Handle)
+{
+    ACPI_TABLE_HEADER       Table;
+    UINT32                  FileSize;
+    size_t                  Actual;
+    UINT32                  i;
+
+
+    /* Read a potential table header */
+
+    Actual = fread (&Table, 1, sizeof (ACPI_TABLE_HEADER), Handle);
+    fseek (Handle, 0, SEEK_SET);
+
+    if (Actual < sizeof (ACPI_TABLE_HEADER))
+    {
+        return (AE_ERROR);
+    }
+
+    /* Header length field must match the file size */
+
+    FileSize = CmGetFileSize (Handle);
+    if (Table.Length != FileSize)
+    {
+        return (AE_ERROR);
+    }
+
+    /*
+     * These fields must be ASCII:
+     * Signature, OemId, OemTableId, AslCompilerId.
+     * We allow a NULL terminator in OemId and OemTableId.
+     */
+    for (i = 0; i < ACPI_NAME_SIZE; i++)
+    {
+        if (!ACPI_IS_ASCII ((UINT8) Table.Signature[i]))
+        {
+            return (AE_ERROR);
+        }
+
+        if (!ACPI_IS_ASCII ((UINT8) Table.AslCompilerId[i]))
+        {
+            return (AE_ERROR);
+        }
+    }
+
+    for (i = 0; (i < ACPI_OEM_ID_SIZE) && (Table.OemId[i]); i++)
+    {
+        if (!ACPI_IS_ASCII ((UINT8) Table.OemId[i]))
+        {
+            return (AE_ERROR);
+        }
+    }
+
+    for (i = 0; (i < ACPI_OEM_TABLE_ID_SIZE) && (Table.OemTableId[i]); i++)
+    {
+        if (!ACPI_IS_ASCII ((UINT8) Table.OemTableId[i]))
+        {
+            return (AE_ERROR);
+        }
+    }
+
+    printf ("Binary file appears to be a valid ACPI table, disassembling\n");
+    return (AE_OK);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    FlCheckForAscii
+ *
+ * PARAMETERS:  Handle              - Open input file
+ *              Filename            - Input filename
+ *              DisplayErrors       - TRUE if error messages desired
+ *
+ * RETURN:      Status
+ *
+ * DESCRIPTION: Verify that the input file is entirely ASCII. Ignores characters
+ *              within comments. Note: does not handle nested comments and does
+ *              not handle comment delimiters within string literals. However,
+ *              on the rare chance this happens and an invalid character is
+ *              missed, the parser will catch the error by failing in some
+ *              spectactular manner.
+ *
+ ******************************************************************************/
+
+ACPI_STATUS
+FlCheckForAscii (
+    FILE                    *Handle,
+    char                    *Filename,
+    BOOLEAN                 DisplayErrors)
+{
+    UINT8                   Byte;
+    ACPI_SIZE               BadBytes = 0;
+    BOOLEAN                 OpeningComment = FALSE;
+    ASL_FILE_STATUS         Status;
+
+
+    Status.Line = 1;
+    Status.Offset = 0;
+
+    /* Read the entire file */
+
+    while (fread (&Byte, 1, 1, Handle) == 1)
+    {
+        /* Ignore comment fields (allow non-ascii within) */
+
+        if (OpeningComment)
+        {
+            /* Check for second comment open delimiter */
+
+            if (Byte == '*')
+            {
+                FlConsumeAnsiComment (Handle, &Status);
+            }
+
+            if (Byte == '/')
+            {
+                FlConsumeNewComment (Handle, &Status);
+            }
+
+            /* Reset */
+
+            OpeningComment = FALSE;
+        }
+        else if (Byte == '/')
+        {
+            OpeningComment = TRUE;
+        }
+
+        /* Check for an ASCII character */
+
+        if (!ACPI_IS_ASCII (Byte))
+        {
+            if ((BadBytes < 10) && (DisplayErrors))
+            {
+                AcpiOsPrintf (
+                    "Non-ASCII character [0x%2.2X] found in line %u, file offset 0x%.2X\n",
+                    Byte, Status.Line, Status.Offset);
+            }
+
+            BadBytes++;
+        }
+
+        /* Update line counter */
+
+        else if (Byte == 0x0A)
+        {
+            Status.Line++;
+        }
+
+        Status.Offset++;
+    }
+
+    /* Seek back to the beginning of the source file */
+
+    fseek (Handle, 0, SEEK_SET);
+
+    /* Were there any non-ASCII characters in the file? */
+
+    if (BadBytes)
+    {
+        if (DisplayErrors)
+        {
+            AcpiOsPrintf (
+                "%u non-ASCII characters found in input source text, could be a binary file\n",
+                BadBytes);
+            AslError (ASL_ERROR, ASL_MSG_NON_ASCII, NULL, Filename);
+        }
+
+        return (AE_BAD_CHARACTER);
+    }
+
+    /* File is OK (100% ASCII) */
+
+    return (AE_OK);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    FlConsumeAnsiComment
+ *
+ * PARAMETERS:  Handle              - Open input file
+ *              Status              - File current status struct
+ *
+ * RETURN:      Number of lines consumed
+ *
+ * DESCRIPTION: Step over a normal slash-star type comment
+ *
+ ******************************************************************************/
+
+static void
+FlConsumeAnsiComment (
+    FILE                    *Handle,
+    ASL_FILE_STATUS         *Status)
+{
+    UINT8                   Byte;
+    BOOLEAN                 ClosingComment = FALSE;
+
+
+    while (fread (&Byte, 1, 1, Handle) == 1)
+    {
+        /* Scan until comment close is found */
+
+        if (ClosingComment)
+        {
+            if (Byte == '/')
+            {
+                return;
+            }
+
+            if (Byte != '*')
+            {
+                /* Reset */
+
+                ClosingComment = FALSE;
+            }
+        }
+        else if (Byte == '*')
+        {
+            ClosingComment = TRUE;
+        }
+
+        /* Maintain line count */
+
+        if (Byte == 0x0A)
+        {
+            Status->Line++;
+        }
+
+        Status->Offset++;
+    }
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    FlConsumeNewComment
+ *
+ * PARAMETERS:  Handle              - Open input file
+ *              Status              - File current status struct
+ *
+ * RETURN:      Number of lines consumed
+ *
+ * DESCRIPTION: Step over a slash-slash type of comment
+ *
+ ******************************************************************************/
+
+static void
+FlConsumeNewComment (
+    FILE                    *Handle,
+    ASL_FILE_STATUS         *Status)
+{
+    UINT8                   Byte;
+
+
+    while (fread (&Byte, 1, 1, Handle) == 1)
+    {
+        Status->Offset++;
+
+        /* Comment ends at newline */
+
+        if (Byte == 0x0A)
+        {
+            Status->Line++;
+            return;
+        }
+    }
+}
--- a/sys/external/bsd/acpica/dist/compiler/aslbtypes.c	Sat Oct 25 19:08:48 2014 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/aslbtypes.c	Sat Oct 25 20:57:55 2014 +0000
@@ -5,7 +5,7 @@
  *****************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2013, Intel Corp.
+ * Copyright (C) 2000 - 2014, Intel Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,7 +41,6 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-
 #include "aslcompiler.h"
 #include "aslcompiler.y.h"
 #include "amlcode.h"
--- a/sys/external/bsd/acpica/dist/compiler/aslcodegen.c	Sat Oct 25 19:08:48 2014 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/aslcodegen.c	Sat Oct 25 20:57:55 2014 +0000
@@ -5,7 +5,7 @@
  *****************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2013, Intel Corp.
+ * Copyright (C) 2000 - 2014, Intel Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,7 +41,6 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-
 #include "aslcompiler.h"
 #include "aslcompiler.y.h"
 #include "amlcode.h"
--- a/sys/external/bsd/acpica/dist/compiler/aslcompiler.h	Sat Oct 25 19:08:48 2014 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/aslcompiler.h	Sat Oct 25 20:57:55 2014 +0000
@@ -5,7 +5,7 @@
  *****************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2013, Intel Corp.
+ * Copyright (C) 2000 - 2014, Intel Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,7 +41,6 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-
 #ifndef __ASLCOMPILER_H
 #define __ASLCOMPILER_H
 
@@ -111,6 +110,11 @@
     FILE                    *InputFile,
     char                    *Filename);
 
+void
+AslParserCleanup (
+    void);
+
+
 /*
  * aslstartup - entered from main()
  */
@@ -154,6 +158,14 @@
 CmCleanupAndExit (
     void);
 
+void
+CmDeleteCaches (
+    void);
+
+
+/*
+ * aslascii - ascii support
+ */
 ACPI_STATUS
 FlCheckForAcpiTable (
     FILE                    *Handle);
@@ -275,14 +287,23 @@
 ApCheckRegMethod (
     ACPI_PARSE_OBJECT       *Op);
 
+BOOLEAN
+ApFindNameInScope (
+    char                    *Name,
+    ACPI_PARSE_OBJECT       *Op);
+
 
 /*
  * aslerror - error handling/reporting
  */
 void
+AslAbort (
+    void);
+
+void
 AslError (
     UINT8                   Level,
-    UINT8                   MessageId,
+    UINT16                  MessageId,
     ACPI_PARSE_OBJECT       *Op,
     char                    *ExtraMessage);
 
@@ -293,7 +314,7 @@
 BOOLEAN
 AslIsExceptionDisabled (
     UINT8                   Level,
-    UINT8                   MessageId);
+    UINT16                  MessageId);
 
 void
 AslCoreSubsystemError (
@@ -309,7 +330,7 @@
 void
 AslCommonError (
     UINT8                   Level,
-    UINT8                   MessageId,
+    UINT16                  MessageId,
     UINT32                  CurrentLineNumber,
     UINT32                  LogicalLineNumber,
     UINT32                  LogicalByteOffset,
@@ -320,7 +341,7 @@
 void
 AslCommonError2 (
     UINT8                   Level,
-    UINT8                   MessageId,
+    UINT16                  MessageId,
     UINT32                  LineNumber,
     UINT32                  Column,
     char                    *SourceLine,
@@ -341,10 +362,6 @@
 AeClearErrorLog (
     void);
 
-ACPI_PHYSICAL_ADDRESS
-AeLocalGetRootPointer (
-    void);
-
 
 /*
  * asllisting - generate all "listing" type files
@@ -435,6 +452,22 @@
 
 
 /*
+ * aslmessages - exception strings
+ */
+const char *
+AeDecodeMessageId (
+    UINT16                  MessageId);
+
+const char *
+AeDecodeExceptionLevel (
+    UINT8                   Level);
+
+UINT16
+AeBuildFullExceptionCode (
+    UINT8                   Level,
+    UINT16                  MessageId);
+
+/*
  * asloffset - generate C offset file for BIOS support
  */
 ACPI_STATUS
@@ -703,10 +736,6 @@
  * aslfiles - File I/O support
  */
 void
-AslAbort (
-    void);
-
-void
 FlAddIncludeDirectory (
     char                    *Dir);
 
@@ -779,6 +808,13 @@
 FlOpenMiscOutputFiles (
     char                    *InputFilename);
 
+/*
+ * aslhwmap - hardware map summary
+ */
+void
+MpEmitMappingInfo (
+    void);
+
 
 /*
  * asload - load namespace in prep for cross reference
@@ -878,10 +914,6 @@
 UtDisplaySummary (
     UINT32                  FileId);
 
-UINT8
-UtHexCharToValue (
-    int                     HexChar);
-
 void
 UtConvertByteToHex (
     UINT8                   RawByte,
@@ -901,13 +933,17 @@
     ACPI_PARSE_OBJECT       *Op);
 
 char *
-UtGetStringBuffer (
+UtStringCacheCalloc (
     UINT32                  Length);
 
 void
 UtExpandLineBuffers (
     void);
 
+void
+UtFreeLineBuffers (
+    void);
+
 ACPI_STATUS
 UtInternalizeName (
     char                    *ExternalName,
@@ -943,11 +979,6 @@
     char                    *InString);
 
 ACPI_STATUS
-AuConvertStringToUuid (
-    char                    *InString,
-    char                    *UuIdBuffer);
-
-ACPI_STATUS
 AuConvertUuidToString (
     char                    *UuIdBuffer,
     char                    *OutString);
@@ -1021,8 +1052,7 @@
 
 ASL_RESOURCE_NODE *
 RsDoOneResourceDescriptor (
-    ACPI_PARSE_OBJECT       *DescriptorTypeOp,
-    UINT32                  CurrentByteOffset,
+    ASL_RESOURCE_INFO       *Info,
     UINT8                   *State);
 
 /* Values for State above */
@@ -1046,43 +1076,35 @@
  */
 ASL_RESOURCE_NODE *
 RsDoEndTagDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset);
+    ASL_RESOURCE_INFO       *Info);
 
 ASL_RESOURCE_NODE *
 RsDoEndDependentDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset);
+    ASL_RESOURCE_INFO       *Info);
 
 ASL_RESOURCE_NODE *
 RsDoMemory24Descriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset);
+    ASL_RESOURCE_INFO       *Info);
 
 ASL_RESOURCE_NODE *
 RsDoMemory32Descriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset);
+    ASL_RESOURCE_INFO       *Info);
 
 ASL_RESOURCE_NODE *
 RsDoMemory32FixedDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset);
+    ASL_RESOURCE_INFO       *Info);
 
 ASL_RESOURCE_NODE *
 RsDoStartDependentDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset);
+    ASL_RESOURCE_INFO       *Info);
 
 ASL_RESOURCE_NODE *
 RsDoStartDependentNoPriDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset);
+    ASL_RESOURCE_INFO       *Info);
 
 ASL_RESOURCE_NODE *
 RsDoVendorSmallDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset);
+    ASL_RESOURCE_INFO       *Info);
 
 
 /*
@@ -1090,33 +1112,27 @@
  */
 ASL_RESOURCE_NODE *
 RsDoDmaDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset);
+    ASL_RESOURCE_INFO       *Info);
 
 ASL_RESOURCE_NODE *
 RsDoFixedDmaDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset);
+    ASL_RESOURCE_INFO       *Info);
 
 ASL_RESOURCE_NODE *
 RsDoFixedIoDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset);
+    ASL_RESOURCE_INFO       *Info);
 
 ASL_RESOURCE_NODE *
 RsDoIoDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset);
+    ASL_RESOURCE_INFO       *Info);
 
 ASL_RESOURCE_NODE *
 RsDoIrqDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset);
+    ASL_RESOURCE_INFO       *Info);
 
 ASL_RESOURCE_NODE *
 RsDoIrqNoFlagsDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset);
+    ASL_RESOURCE_INFO       *Info);
 
 
 /*
@@ -1124,61 +1140,50 @@
  */
 ASL_RESOURCE_NODE *
 RsDoInterruptDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset);
+    ASL_RESOURCE_INFO       *Info);
 
 ASL_RESOURCE_NODE *
 RsDoVendorLargeDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset);
+    ASL_RESOURCE_INFO       *Info);
 
 ASL_RESOURCE_NODE *
 RsDoGeneralRegisterDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset);
+    ASL_RESOURCE_INFO       *Info);
 
 ASL_RESOURCE_NODE *
 RsDoGpioIntDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset);
+    ASL_RESOURCE_INFO       *Info);
 
 ASL_RESOURCE_NODE *
 RsDoGpioIoDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset);
+    ASL_RESOURCE_INFO       *Info);
 
 ASL_RESOURCE_NODE *
 RsDoI2cSerialBusDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset);
+    ASL_RESOURCE_INFO       *Info);
 
 ASL_RESOURCE_NODE *
 RsDoSpiSerialBusDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset);
+    ASL_RESOURCE_INFO       *Info);
 
 ASL_RESOURCE_NODE *
 RsDoUartSerialBusDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset);
+    ASL_RESOURCE_INFO       *Info);
 
 /*
  * aslrestype2d - DWord address descriptors
  */
 ASL_RESOURCE_NODE *
 RsDoDwordIoDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset);
+    ASL_RESOURCE_INFO       *Info);
 
 ASL_RESOURCE_NODE *
 RsDoDwordMemoryDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset);
+    ASL_RESOURCE_INFO       *Info);
 
 ASL_RESOURCE_NODE *
 RsDoDwordSpaceDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset);
+    ASL_RESOURCE_INFO       *Info);
 
 
 /*
@@ -1186,18 +1191,15 @@
  */
 ASL_RESOURCE_NODE *
 RsDoExtendedIoDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset);
+    ASL_RESOURCE_INFO       *Info);
 
 ASL_RESOURCE_NODE *
 RsDoExtendedMemoryDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset);
+    ASL_RESOURCE_INFO       *Info);
 
 ASL_RESOURCE_NODE *
 RsDoExtendedSpaceDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset);
+    ASL_RESOURCE_INFO       *Info);
 
 
 /*
@@ -1205,18 +1207,15 @@
  */
 ASL_RESOURCE_NODE *
 RsDoQwordIoDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset);
+    ASL_RESOURCE_INFO       *Info);
 
 ASL_RESOURCE_NODE *
 RsDoQwordMemoryDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset);
+    ASL_RESOURCE_INFO       *Info);
 
 ASL_RESOURCE_NODE *
 RsDoQwordSpaceDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset);
+    ASL_RESOURCE_INFO       *Info);
 
 
 /*
@@ -1224,18 +1223,16 @@
  */
 ASL_RESOURCE_NODE *
 RsDoWordIoDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset);
+    ASL_RESOURCE_INFO       *Info);
 
 ASL_RESOURCE_NODE *
 RsDoWordSpaceDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset);
+    ASL_RESOURCE_INFO       *Info);
 
 ASL_RESOURCE_NODE *
 RsDoWordBusNumberDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset);
+    ASL_RESOURCE_INFO       *Info);
+
 
 /*
  * Entry to data table compiler subsystem
--- a/sys/external/bsd/acpica/dist/compiler/asldefine.h	Sat Oct 25 19:08:48 2014 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/asldefine.h	Sat Oct 25 20:57:55 2014 +0000
@@ -5,7 +5,7 @@
  *****************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2013, Intel Corp.
+ * Copyright (C) 2000 - 2014, Intel Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,7 +41,6 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-
 #ifndef __ASLDEFINE_H
 #define __ASLDEFINE_H
 
@@ -55,14 +54,14 @@
 #define ASL_INVOCATION_NAME         "iasl"
 #define ASL_CREATOR_ID              "INTL"
 
-#define ASL_COMPLIANCE              "Supports ACPI Specification Revision 5.0A"
+#define ASL_COMPLIANCE              "Supports ACPI Specification Revision 5.1"
 
 
 /* Configuration constants */
 
 #define ASL_MAX_ERROR_COUNT         200
-#define ASL_NODE_CACHE_SIZE         1024
-#define ASL_STRING_CACHE_SIZE       32768
+#define ASL_PARSEOP_CACHE_SIZE      (1024 * 16)
+#define ASL_STRING_CACHE_SIZE       (1024 * 64)
 
 #define ASL_FIRST_PARSE_OPCODE      PARSEOP_ACCESSAS
 #define ASL_PARSE_OPCODE_BASE       PARSEOP_ACCESSAS        /* First Lex type */
@@ -109,6 +108,7 @@
 
 #define FILE_SUFFIX_PREPROCESSOR    "i"
 #define FILE_SUFFIX_AML_CODE        "aml"
+#define FILE_SUFFIX_MAP             "map"
 #define FILE_SUFFIX_LISTING         "lst"
 #define FILE_SUFFIX_HEX_DUMP        "hex"
 #define FILE_SUFFIX_DEBUG           "txt"
--- a/sys/external/bsd/acpica/dist/compiler/aslfold.c	Sat Oct 25 19:08:48 2014 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/aslfold.c	Sat Oct 25 20:57:55 2014 +0000
@@ -5,7 +5,7 @@
  *****************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2013, Intel Corp.
+ * Copyright (C) 2000 - 2014, Intel Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,7 +41,6 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-
 #include "aslcompiler.h"
 #include "aslcompiler.y.h"
 #include "amlcode.h"
--- a/sys/external/bsd/acpica/dist/compiler/aslglobal.h	Sat Oct 25 19:08:48 2014 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/aslglobal.h	Sat Oct 25 20:57:55 2014 +0000
@@ -5,7 +5,7 @@
  *****************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2013, Intel Corp.
+ * Copyright (C) 2000 - 2014, Intel Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,7 +41,6 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-
 #ifndef __ASLGLOBAL_H
 #define __ASLGLOBAL_H
 
@@ -63,11 +62,6 @@
 
 #ifdef _DECLARE_GLOBALS
 UINT32                              Gbl_ExceptionCount[ASL_NUM_REPORT_LEVELS] = {0,0,0,0,0,0};
-char                                AslHexLookup[] =
-{
-    '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'
-};
-
 
 /* Table below must match ASL_FILE_TYPES in asltypes.h */
 
@@ -87,12 +81,12 @@
     {NULL, NULL, "C Source:     ", "C Code Output"},
     {NULL, NULL, "ASM Include:  ", "Assembly Header Output"},
     {NULL, NULL, "C Include:    ", "C Header Output"},
-    {NULL, NULL, "Offset Table: ", "C Offset Table Output"}
+    {NULL, NULL, "Offset Table: ", "C Offset Table Output"},
+    {NULL, NULL, "Device Map:   ", "Device Map Output"}
 };
 
 #else
 extern UINT32                       Gbl_ExceptionCount[ASL_NUM_REPORT_LEVELS];
-extern char                         AslHexLookup[];
 extern ASL_FILE_INFO                Gbl_Files [ASL_NUM_FILES];
 #endif
 
@@ -102,12 +96,20 @@
  */
 extern int                          yydebug;
 extern FILE                         *AslCompilerin;
-extern int                          AslCompilerdebug;
 extern int                          DtParserdebug;
 extern int                          PrParserdebug;
 extern const ASL_MAPPING_ENTRY      AslKeywordMapping[];
 extern char                         *AslCompilertext;
 
+/*
+ * Older versions of Bison won't emit this external in the generated header.
+ * Newer versions do emit the external, so we don't need to do it.
+ */
+#ifndef ASLCOMPILER_ASLCOMPILERPARSE_H
+extern int                  AslCompilerdebug;
+#endif
+
+
 #define ASL_DEFAULT_LINE_BUFFER_SIZE    (1024 * 32) /* 32K */
 #define ASL_MSG_BUFFER_SIZE             4096
 #define ASL_MAX_DISABLED_MESSAGES       32
@@ -140,6 +142,7 @@
 ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_DisassembleAll, FALSE);
 
 ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_UseDefaultAmlFilename, TRUE);
+ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_MapfileFlag, FALSE);
 ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_NsOutputFlag, FALSE);
 ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_PreprocessorOutputFlag, FALSE);
 ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_DebugFlag, FALSE);
@@ -159,7 +162,6 @@
 ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_WarningsAsErrors, FALSE);
 ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_NoResourceChecking, FALSE);
 ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_DisasmFlag, FALSE);
-ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_GetAllTables, FALSE);
 ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_IntegerOptimizationFlag, TRUE);
 ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_ReferenceOptimizationFlag, TRUE);
 ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_DisplayRemarks, TRUE);
@@ -170,6 +172,7 @@
 ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_VerboseTemplates, FALSE);
 ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_DoTemplates, FALSE);
 ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_CompileGeneric, FALSE);
+ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_AllExceptionsDisabled, FALSE);
 
 
 #define HEX_OUTPUT_NONE             0
@@ -207,6 +210,25 @@
 ASL_EXTERN UINT32                   ASL_INIT_GLOBAL (TotalFolds, 0);
 
 
+/* Local caches */
+
+ASL_EXTERN UINT32                   ASL_INIT_GLOBAL (Gbl_ParseOpCount, 0);
+ASL_EXTERN ASL_CACHE_INFO           ASL_INIT_GLOBAL (*Gbl_ParseOpCacheList, NULL);
+ASL_EXTERN ACPI_PARSE_OBJECT        ASL_INIT_GLOBAL (*Gbl_ParseOpCacheNext, NULL);
+ASL_EXTERN ACPI_PARSE_OBJECT        ASL_INIT_GLOBAL (*Gbl_ParseOpCacheLast, NULL);
+
+ASL_EXTERN UINT32                   ASL_INIT_GLOBAL (Gbl_StringCount, 0);
+ASL_EXTERN UINT32                   ASL_INIT_GLOBAL (Gbl_StringSize, 0);
+ASL_EXTERN ASL_CACHE_INFO           ASL_INIT_GLOBAL (*Gbl_StringCacheList, NULL);
+ASL_EXTERN char                     ASL_INIT_GLOBAL (*Gbl_StringCacheNext, NULL);
+ASL_EXTERN char                     ASL_INIT_GLOBAL (*Gbl_StringCacheLast, NULL);
+
+/* Map file */
+
+ASL_EXTERN ACPI_GPIO_INFO           ASL_INIT_GLOBAL (*Gbl_GpioList, NULL);
+ASL_EXTERN ACPI_SERIAL_INFO         ASL_INIT_GLOBAL (*Gbl_SerialList, NULL);
+
+
 /* Misc */
 
 ASL_EXTERN UINT8                    ASL_INIT_GLOBAL (Gbl_RevisionOverride, 0);
@@ -215,10 +237,6 @@
 ASL_EXTERN UINT32                   ASL_INIT_GLOBAL (Gbl_TableLength, 0);
 ASL_EXTERN UINT32                   ASL_INIT_GLOBAL (Gbl_SourceLine, 0);
 ASL_EXTERN ASL_LISTING_NODE         ASL_INIT_GLOBAL (*Gbl_ListingNode, NULL);
-ASL_EXTERN ACPI_PARSE_OBJECT        ASL_INIT_GLOBAL (*Gbl_NodeCacheNext, NULL);
-ASL_EXTERN ACPI_PARSE_OBJECT        ASL_INIT_GLOBAL (*Gbl_NodeCacheLast, NULL);
-ASL_EXTERN char                     ASL_INIT_GLOBAL (*Gbl_StringCacheNext, NULL);
-ASL_EXTERN char                     ASL_INIT_GLOBAL (*Gbl_StringCacheLast, NULL);
 ASL_EXTERN ACPI_PARSE_OBJECT        *Gbl_FirstLevelInsertionNode;
 ASL_EXTERN UINT8                    ASL_INIT_GLOBAL (Gbl_FileType, 0);
 ASL_EXTERN char                     ASL_INIT_GLOBAL (*Gbl_Signature, NULL);
--- a/sys/external/bsd/acpica/dist/compiler/aslhex.c	Sat Oct 25 19:08:48 2014 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/aslhex.c	Sat Oct 25 20:57:55 2014 +0000
@@ -5,7 +5,7 @@
  *****************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2013, Intel Corp.
+ * Copyright (C) 2000 - 2014, Intel Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,7 +41,6 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-
 #include "aslcompiler.h"
 
 #define _COMPONENT          ACPI_COMPILER
--- a/sys/external/bsd/acpica/dist/compiler/asllength.c	Sat Oct 25 19:08:48 2014 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/asllength.c	Sat Oct 25 20:57:55 2014 +0000
@@ -5,7 +5,7 @@
  *****************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2013, Intel Corp.
+ * Copyright (C) 2000 - 2014, Intel Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,7 +41,6 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-
 #include "aslcompiler.h"
 #include "aslcompiler.y.h"
 #include "amlcode.h"
--- a/sys/external/bsd/acpica/dist/compiler/asllisting.c	Sat Oct 25 19:08:48 2014 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/asllisting.c	Sat Oct 25 20:57:55 2014 +0000
@@ -5,7 +5,7 @@
  *****************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2013, Intel Corp.
+ * Copyright (C) 2000 - 2014, Intel Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
--- a/sys/external/bsd/acpica/dist/compiler/asllistsup.c	Sat Oct 25 19:08:48 2014 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/asllistsup.c	Sat Oct 25 20:57:55 2014 +0000
@@ -5,7 +5,7 @@
  *****************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2013, Intel Corp.
+ * Copyright (C) 2000 - 2014, Intel Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
--- a/sys/external/bsd/acpica/dist/compiler/aslmain.c	Sat Oct 25 19:08:48 2014 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/aslmain.c	Sat Oct 25 20:57:55 2014 +0000
@@ -5,7 +5,7 @@
  *****************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2013, Intel Corp.
+ * Copyright (C) 2000 - 2014, Intel Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -73,6 +73,36 @@
 AslInitialize (
     void);
 
+UINT8
+AcpiIsBigEndianMachine (
+    void);
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    AcpiIsBigEndianMachine
+ *
+ * PARAMETERS:  None
+ *
+ * RETURN:      TRUE if machine is big endian
+ *              FALSE if machine is little endian
+ *
+ * DESCRIPTION: Detect whether machine is little endian or big endian.
+ *
+ ******************************************************************************/
+
+UINT8
+AcpiIsBigEndianMachine (
+    void)
+{
+    union {
+        UINT32              Integer;
+        UINT8               Bytes[4];
+    } Overlay = {0xFF000000};
+
+    return (Overlay.Bytes[0]); /* Returns 0xFF (TRUE) for big endian */
+}
+
 
 /*******************************************************************************
  *
@@ -142,6 +172,7 @@
 
     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)");
 
@@ -158,7 +189,6 @@
     ACPI_OPTION ("",                "  (Obtain DSDT from current system if no input file)");
     ACPI_OPTION ("-e  <f1 f2 ...>", "Include ACPI table(s) for external symbol resolution");
     ACPI_OPTION ("-fe <file>",      "Specify external symbol declaration file");
-    ACPI_OPTION ("-g",              "Get ACPI tables and write to files (*.dat)");
     ACPI_OPTION ("-in",             "Ignore NoOp opcodes");
     ACPI_OPTION ("-vt",             "Dump binary table data in hex format within output file");
 
@@ -298,8 +328,22 @@
     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 (AcpiIsBigEndianMachine ())
+    {
+        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 */
@@ -319,16 +363,6 @@
 
     /* Perform global actions first/only */
 
-    if (Gbl_GetAllTables)
-    {
-        Status = AslDoOneFile (NULL);
-        if (ACPI_FAILURE (Status))
-        {
-            return (-1);
-        }
-        return (0);
-    }
-
     if (Gbl_DisassembleAll)
     {
         while (argv[Index1])
@@ -360,16 +394,23 @@
         Status = AslDoOneFile (argv[Index2]);
         if (ACPI_FAILURE (Status))
         {
-            return (-1);
+            ReturnStatus = -1;
+            goto CleanupAndExit;
         }
 
         Index2++;
     }
 
+
+CleanupAndExit:
+
+    UtFreeLineBuffers ();
+    AslParserCleanup ();
+
     if (AcpiGbl_ExternalFileList)
     {
         AcpiDmClearExternalFileList();
     }
 
-    return (0);
+    return (ReturnStatus);
 }
--- a/sys/external/bsd/acpica/dist/compiler/aslmap.c	Sat Oct 25 19:08:48 2014 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/aslmap.c	Sat Oct 25 20:57:55 2014 +0000
@@ -5,7 +5,7 @@
  *****************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2013, Intel Corp.
+ * Copyright (C) 2000 - 2014, Intel Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/aslmapenter.c	Sat Oct 25 20:57:55 2014 +0000
@@ -0,0 +1,346 @@
+/******************************************************************************
+ *
+ * Module Name: aslmapenter - Build resource descriptor/device maps
+ *
+ *****************************************************************************/
+
+/*
+ * Copyright (C) 2000 - 2014, 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 "acpi.h"
+#include "accommon.h"
+#include "acapps.h"
+#include "aslcompiler.h"
+
+/* This module used for application-level code only */
+
+#define _COMPONENT          ACPI_COMPILER
+        ACPI_MODULE_NAME    ("aslmapenter")
+
+/* Local prototypes */
+
+static ACPI_GPIO_INFO *
+MpCreateGpioInfo (
+    UINT16                  PinNumber,
+    char                    *DeviceName);
+
+static ACPI_SERIAL_INFO *
+MpCreateSerialInfo (
+    char                    *DeviceName,
+    UINT16                  Address);
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    MpSaveGpioInfo
+ *
+ * PARAMETERS:  Resource                - GPIO resource descriptor
+ *              PinCount                - From GPIO descriptor
+ *              PinList                 - From GPIO descriptor
+ *              DeviceName              - The "ResourceSource" name
+ *
+ * RETURN:      None
+ *
+ * DESCRIPTION: External Interface.
+ *              Save GPIO resource descriptor information.
+ *              Creates new GPIO info blocks, one for each pin defined by the
+ *              GPIO descriptor.
+ *
+ ******************************************************************************/
+
+void
+MpSaveGpioInfo (
+    ACPI_PARSE_OBJECT       *Op,
+    AML_RESOURCE            *Resource,
+    UINT32                  PinCount,
+    UINT16                  *PinList,
+    char                    *DeviceName)
+{
+    ACPI_GPIO_INFO          *Info;
+    UINT32                  i;
+
+
+    /* Mapfile option enabled? */
+
+    if (!Gbl_MapfileFlag)
+    {
+        return;
+    }
+
+    /* Create an info block for each pin defined in the descriptor */
+
+    for (i = 0; i < PinCount; i++)
+    {
+        Info = MpCreateGpioInfo (PinList[i], DeviceName);
+
+        Info->Op = Op;
+        Info->DeviceName = DeviceName;
+        Info->PinCount = PinCount;
+        Info->PinIndex = i;
+        Info->PinNumber = PinList[i];
+        Info->Type = Resource->Gpio.ConnectionType;
+        Info->Direction = (UINT8) (Resource->Gpio.IntFlags & 0x0003);       /* _IOR, for IO descriptor */
+        Info->Polarity = (UINT8) ((Resource->Gpio.IntFlags >> 1) & 0x0003); /* _POL, for INT descriptor */
+    }
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    MpSaveSerialInfo
+ *
+ * PARAMETERS:  Resource                - A Serial resource descriptor
+ *              DeviceName              - The "ResourceSource" name.
+ *
+ * RETURN:      None
+ *
+ * DESCRIPTION: External Interface.
+ *              Save serial resource descriptor information.
+ *              Creates a new serial info block.
+ *
+ ******************************************************************************/
+
+void
+MpSaveSerialInfo (
+    ACPI_PARSE_OBJECT       *Op,
+    AML_RESOURCE            *Resource,
+    char                    *DeviceName)
+{
+    ACPI_SERIAL_INFO        *Info;
+    UINT16                  Address;
+    UINT32                  Speed;
+
+
+    /* Mapfile option enabled? */
+
+    if (!Gbl_MapfileFlag)
+    {
+        return;
+    }
+
+    if (Resource->DescriptorType != ACPI_RESOURCE_NAME_SERIAL_BUS)
+    {
+        return;
+    }
+
+    /* Extract address and speed from the resource descriptor */
+
+    switch (Resource->CommonSerialBus.Type)
+    {
+    case AML_RESOURCE_I2C_SERIALBUSTYPE:
+
+        Address = Resource->I2cSerialBus.SlaveAddress;
+        Speed = Resource->I2cSerialBus.ConnectionSpeed;
+        break;
+
+    case AML_RESOURCE_SPI_SERIALBUSTYPE:
+
+        Address = Resource->SpiSerialBus.DeviceSelection;
+        Speed = Resource->SpiSerialBus.ConnectionSpeed;
+        break;
+
+    case AML_RESOURCE_UART_SERIALBUSTYPE:
+
+        Address = 0;
+        Speed = Resource->UartSerialBus.DefaultBaudRate;
+        break;
+
+    default:    /* Invalid bus subtype */
+        return;
+    }
+
+    Info = MpCreateSerialInfo (DeviceName, Address);
+
+    Info->Op = Op;
+    Info->DeviceName = DeviceName;
+    Info->Resource = Resource;
+    Info->Address = Address;
+    Info->Speed = Speed;
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    MpCreateGpioInfo
+ *
+ * PARAMETERS:  PinNumber               - GPIO pin number
+ *              DeviceName              - The "ResourceSource" name
+ *
+ * RETURN:      New GPIO info block.
+ *
+ * DESCRIPTION: Create a new GPIO info block and place it on the global list.
+ *              The list is sorted by GPIO device names first, and pin numbers
+ *              secondarily.
+ *
+ ******************************************************************************/
+
+static ACPI_GPIO_INFO *
+MpCreateGpioInfo (
+    UINT16                  PinNumber,
+    char                    *DeviceName)
+{
+    ACPI_GPIO_INFO          *Info;
+    ACPI_GPIO_INFO          *NextGpio;
+    ACPI_GPIO_INFO          *PrevGpio;
+
+
+    /*
+     * Allocate a new info block and insert it into the global GPIO list
+     * sorted by both source device name and then the pin number. There is
+     * one block per pin.
+     */
+    Info = ACPI_CAST_PTR (ACPI_GPIO_INFO,
+        UtStringCacheCalloc (sizeof (ACPI_GPIO_INFO)));
+
+    NextGpio = Gbl_GpioList;
+    PrevGpio = NULL;
+    if (!Gbl_GpioList)
+    {
+        Gbl_GpioList = Info;
+        Info->Next = NULL;
+        return (Info);
+    }
+
+    /* Sort on source DeviceName first */
+
+    while (NextGpio &&
+            (ACPI_STRCMP (DeviceName, NextGpio->DeviceName) > 0))
+    {
+        PrevGpio = NextGpio;
+        NextGpio = NextGpio->Next;
+    }
+
+    /* Now sort on the PinNumber */
+
+    while (NextGpio &&
+            (NextGpio->PinNumber < PinNumber) &&
+            !ACPI_STRCMP (DeviceName, NextGpio->DeviceName))
+    {
+        PrevGpio = NextGpio;
+        NextGpio = NextGpio->Next;
+    }
+
+    /* Finish the list insertion */
+
+    if (PrevGpio)
+    {
+        PrevGpio->Next = Info;
+    }
+    else
+    {
+        Gbl_GpioList = Info;
+    }
+
+    Info->Next = NextGpio;
+    return (Info);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    MpCreateSerialInfo
+ *
+ * PARAMETERS:  DeviceName              - The "ResourceSource" name.
+ *              Address                 - Physical address for the device
+ *
+ * RETURN:      New Serial info block.
+ *
+ * DESCRIPTION: Create a new Serial info block and place it on the global list.
+ *              The list is sorted by Serial device names first, and addresses
+ *              secondarily.
+ *
+ ******************************************************************************/
+
+static ACPI_SERIAL_INFO *
+MpCreateSerialInfo (
+    char                    *DeviceName,
+    UINT16                  Address)
+{
+    ACPI_SERIAL_INFO        *Info;
+    ACPI_SERIAL_INFO        *NextSerial;
+    ACPI_SERIAL_INFO        *PrevSerial;
+
+
+    /*
+     * Allocate a new info block and insert it into the global Serial list
+     * sorted by both source device name and then the address.
+     */
+    Info = ACPI_CAST_PTR (ACPI_SERIAL_INFO,
+        UtStringCacheCalloc (sizeof (ACPI_SERIAL_INFO)));
+
+    NextSerial = Gbl_SerialList;
+    PrevSerial = NULL;
+    if (!Gbl_SerialList)
+    {
+        Gbl_SerialList = Info;
+        Info->Next = NULL;
+        return (Info);
+    }
+
+    /* Sort on source DeviceName */
+
+    while (NextSerial &&
+        (ACPI_STRCMP (DeviceName, NextSerial->DeviceName) > 0))
+    {
+        PrevSerial = NextSerial;
+        NextSerial = NextSerial->Next;
+    }
+
+    /* Now sort on the Address */
+
+    while (NextSerial &&
+        (NextSerial->Address < Address) &&
+        !ACPI_STRCMP (DeviceName, NextSerial->DeviceName))
+    {
+        PrevSerial = NextSerial;
+        NextSerial = NextSerial->Next;
+    }
+
+    /* Finish the list insertion */
+
+    if (PrevSerial)
+    {
+        PrevSerial->Next = Info;
+    }
+    else
+    {
+        Gbl_SerialList = Info;
+    }
+
+    Info->Next = NextSerial;
+    return (Info);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/aslmapoutput.c	Sat Oct 25 20:57:55 2014 +0000
@@ -0,0 +1,661 @@
+/******************************************************************************
+ *
+ * Module Name: aslmapoutput - Output/emit the resource descriptor/device maps
+ *
+ *****************************************************************************/
+
+/*
+ * Copyright (C) 2000 - 2014, 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 "acpi.h"
+#include "accommon.h"
+#include "acapps.h"
+#include "aslcompiler.h"
+#include "aslcompiler.y.h"
+#include "acinterp.h"
+#include "acparser.h"
+#include "acnamesp.h"
+#include "amlcode.h"
+
+/* This module used for application-level code only */
+
+#define _COMPONENT          ACPI_COMPILER
+        ACPI_MODULE_NAME    ("aslmapoutput")
+
+/* Local prototypes */
+
+static void
+MpEmitGpioInfo (
+    void);
+
+static void
+MpEmitSerialInfo (
+    void);
+
+static void
+MpEmitDeviceTree (
+    void);
+
+static ACPI_STATUS
+MpEmitOneDevice (
+    ACPI_HANDLE             ObjHandle,
+    UINT32                  NestingLevel,
+    void                    *Context,
+    void                    **ReturnValue);
+
+static void
+MpXrefDevices (
+    ACPI_GPIO_INFO          *Info);
+
+static ACPI_STATUS
+MpNamespaceXrefBegin (
+    ACPI_PARSE_OBJECT       *Op,
+    UINT32                  Level,
+    void                    *Context);
+
+
+/* Strings used to decode flag bits */
+
+const char                  *DirectionDecode[] =
+{
+    "Both I/O   ",
+    "InputOnly  ",
+    "OutputOnly ",
+    "Preserve   "
+};
+
+const char                  *PolarityDecode[] =
+{
+    "ActiveHigh",
+    "ActiveLow ",
+    "ActiveBoth",
+    "Reserved  "
+};
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    MpEmitMappingInfo
+ *
+ * PARAMETERS:  None
+ *
+ * RETURN:      None
+ *
+ * DESCRIPTION: External interface.
+ *              Create and open the mapfile and emit all of the collected
+ *              hardware mapping information. Includes: GPIO information,
+ *              Serial information, and a dump of the entire ACPI device tree.
+ *
+ ******************************************************************************/
+
+void
+MpEmitMappingInfo (
+    void)
+{
+    char                    *NewFilename;
+
+
+    /* Mapfile option enabled? */
+
+    if (!Gbl_MapfileFlag)
+    {
+        return;
+    }
+
+    /* Create/Open a map file */
+
+    NewFilename = FlGenerateFilename (Gbl_OutputFilenamePrefix,
+        FILE_SUFFIX_MAP);
+    if (!NewFilename)
+    {
+        AslCommonError (ASL_ERROR, ASL_MSG_LISTING_FILENAME,
+            0, 0, 0, 0, NULL, NULL);
+    }
+
+    /* Open the hex file, text mode (closed at compiler exit) */
+
+    FlOpenFile (ASL_FILE_MAP_OUTPUT, NewFilename, "w+t");
+    AslCompilerSignon (ASL_FILE_MAP_OUTPUT);
+    AslCompilerFileHeader (ASL_FILE_MAP_OUTPUT);
+
+    if (!Gbl_GpioList)
+    {
+        FlPrintFile (ASL_FILE_MAP_OUTPUT,
+            "\nNo GPIO devices found\n");
+    }
+
+    if (!Gbl_SerialList)
+    {
+        FlPrintFile (ASL_FILE_MAP_OUTPUT,
+            "\nNo Serial devices found (I2C/SPI/UART)\n");
+    }
+
+    if (!Gbl_GpioList && !Gbl_SerialList)
+    {
+        return;
+    }
+
+    /* Headers */
+
+    FlPrintFile (ASL_FILE_MAP_OUTPUT, "\nResource Descriptor Connectivity Map\n");
+    FlPrintFile (ASL_FILE_MAP_OUTPUT,   "------------------------------------\n");
+
+    /* Emit GPIO and Serial descriptors, then entire ACPI device tree */
+
+    MpEmitGpioInfo ();
+    MpEmitSerialInfo ();
+    MpEmitDeviceTree ();
+
+    /* Clear the lists - no need to free memory here */
+
+    Gbl_SerialList = NULL;
+    Gbl_GpioList = NULL;
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    MpEmitGpioInfo
+ *
+ * PARAMETERS:  None
+ *
+ * RETURN:      None
+ *
+ * DESCRIPTION: Emit the info about all GPIO devices found during the
+ *              compile or disassembly.
+ *
+ ******************************************************************************/
+
+static void
+MpEmitGpioInfo (
+    void)
+{
+    ACPI_GPIO_INFO          *Info;
+    char                    *Type;
+    char                    *PrevDeviceName = NULL;
+    const char              *Direction;
+    const char              *Polarity;
+    char                    *ParentPathname;
+    const char              *Description;
+    char                    *HidString;
+    const AH_DEVICE_ID      *HidInfo;
+
+
+    /* Walk the GPIO descriptor list */
+
+    Info = Gbl_GpioList;
+    while (Info)
+    {
+        HidString = MpGetHidViaNamestring (Info->DeviceName);
+
+        /* Print header info for the controller itself */
+
+        if (!PrevDeviceName ||
+            ACPI_STRCMP (PrevDeviceName, Info->DeviceName))
+        {
+            FlPrintFile (ASL_FILE_MAP_OUTPUT,
+                "\n\nGPIO Controller:  %-8s  %-28s",
+                HidString, Info->DeviceName);
+
+            HidInfo = AcpiAhMatchHardwareId (HidString);
+            if (HidInfo)
+            {
+                FlPrintFile (ASL_FILE_MAP_OUTPUT, "  // %s",
+                    HidInfo->Description);
+            }
+
+            FlPrintFile (ASL_FILE_MAP_OUTPUT,
+                "\n\nPin   Type     Direction    Polarity"
+                "    Dest _HID  Destination\n");
+        }
+
+        PrevDeviceName = Info->DeviceName;
+
+        /* Setup various strings based upon the type (GpioInt or GpioIo) */
+
+        switch (Info->Type)
+        {
+        case AML_RESOURCE_GPIO_TYPE_INT:
+
+            Type = "GpioInt";
+            Direction = "-Interrupt-";
+            Polarity = PolarityDecode[Info->Polarity];
+            break;
+
+        case AML_RESOURCE_GPIO_TYPE_IO:
+
+            Type = "GpioIo ";
+            Direction = DirectionDecode[Info->Direction];
+            Polarity = "          ";
+            break;
+
+        default:
+            continue;
+        }
+
+        /* Emit the GPIO info */
+
+        FlPrintFile (ASL_FILE_MAP_OUTPUT, "%4.4X  %s  %s  %s  ",
+            Info->PinNumber, Type, Direction, Polarity);
+
+        ParentPathname = NULL;
+        HidString = MpGetConnectionInfo (Info->Op, Info->PinIndex,
+            &Info->TargetNode, &ParentPathname);
+        if (HidString)
+        {
+            /*
+             * This is a Connection() field
+             * Attempt to find all references to the field.
+             */
+            FlPrintFile (ASL_FILE_MAP_OUTPUT, "%8s   %-28s",
+                HidString, ParentPathname);
+
+            MpXrefDevices (Info);
+        }
+        else
+        {
+            /*
+             * For Devices, attempt to get the _HID description string.
+             * Failing that (many _HIDs are not recognized), attempt to
+             * get the _DDN description string.
+             */
+            HidString = MpGetParentDeviceHid (Info->Op, &Info->TargetNode,
+                &ParentPathname);
+
+            FlPrintFile (ASL_FILE_MAP_OUTPUT, "%8s   %-28s",
+                HidString, ParentPathname);
+
+            /* Get the _HID description or _DDN string */
+
+            HidInfo = AcpiAhMatchHardwareId (HidString);
+            if (HidInfo)
+            {
+                FlPrintFile (ASL_FILE_MAP_OUTPUT, "  // %s",
+                    HidInfo->Description);
+            }
+            else if ((Description = MpGetDdnValue (ParentPathname)))
+            {
+                FlPrintFile (ASL_FILE_MAP_OUTPUT, "  // %s (_DDN)",
+                    Description);
+            }
+        }
+
+        FlPrintFile (ASL_FILE_MAP_OUTPUT, "\n");
+        ACPI_FREE (ParentPathname);
+        Info = Info->Next;
+    }
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    MpEmitSerialInfo
+ *
+ * PARAMETERS:  None
+ *
+ * RETURN:      None
+ *
+ * DESCRIPTION: Emit the info about all Serial devices found during the
+ *              compile or disassembly.
+ *
+ ******************************************************************************/
+
+static void
+MpEmitSerialInfo (
+    void)
+{
+    ACPI_SERIAL_INFO        *Info;
+    char                    *Type;
+    char                    *ParentPathname;
+    char                    *PrevDeviceName = NULL;
+    char                    *HidString;
+    const AH_DEVICE_ID      *HidInfo;
+    const char              *Description;
+    AML_RESOURCE            *Resource;
+
+
+    /* Walk the constructed serial descriptor list */
+
+    Info = Gbl_SerialList;
+    while (Info)
+    {
+        Resource = Info->Resource;
+        switch (Resource->CommonSerialBus.Type)
+        {
+        case AML_RESOURCE_I2C_SERIALBUSTYPE:
+            Type = "I2C ";
+            break;
+
+        case AML_RESOURCE_SPI_SERIALBUSTYPE:
+            Type = "SPI ";
+            break;
+
+        case AML_RESOURCE_UART_SERIALBUSTYPE:
+            Type = "UART";
+            break;
+
+        default:
+            Type = "UNKN";
+            break;
+        }
+
+        HidString = MpGetHidViaNamestring (Info->DeviceName);
+
+        /* Print header info for the controller itself */
+
+        if (!PrevDeviceName ||
+            ACPI_STRCMP (PrevDeviceName, Info->DeviceName))
+        {
+            FlPrintFile (ASL_FILE_MAP_OUTPUT, "\n\n%s Controller:  ",
+                Type);
+            FlPrintFile (ASL_FILE_MAP_OUTPUT, "%-8s  %-28s",
+                HidString, Info->DeviceName);
+
+            HidInfo = AcpiAhMatchHardwareId (HidString);
+            if (HidInfo)
+            {
+                FlPrintFile (ASL_FILE_MAP_OUTPUT, "  // %s",
+                    HidInfo->Description);
+            }
+
+            FlPrintFile (ASL_FILE_MAP_OUTPUT, "\n\n");
+            FlPrintFile (ASL_FILE_MAP_OUTPUT,
+                "Type  Address   Speed      Dest _HID  Destination\n");
+        }
+
+        PrevDeviceName = Info->DeviceName;
+
+        FlPrintFile (ASL_FILE_MAP_OUTPUT, "%s   %4.4X    %8.8X    ",
+            Type, Info->Address, Info->Speed);
+
+        ParentPathname = NULL;
+        HidString = MpGetConnectionInfo (Info->Op, 0, &Info->TargetNode,
+            &ParentPathname);
+        if (HidString)
+        {
+            /*
+             * This is a Connection() field
+             * Attempt to find all references to the field.
+             */
+            FlPrintFile (ASL_FILE_MAP_OUTPUT, "%8s   %-28s",
+                HidString, ParentPathname);
+        }
+        else
+        {
+            /* Normal resource template */
+
+            HidString = MpGetParentDeviceHid (Info->Op, &Info->TargetNode,
+                &ParentPathname);
+            FlPrintFile (ASL_FILE_MAP_OUTPUT, "%8s   %-28s",
+                HidString, ParentPathname);
+
+            /* Get the _HID description or _DDN string */
+
+            HidInfo = AcpiAhMatchHardwareId (HidString);
+            if (HidInfo)
+            {
+                FlPrintFile (ASL_FILE_MAP_OUTPUT, "  // %s",
+                    HidInfo->Description);
+            }
+            else if ((Description = MpGetDdnValue (ParentPathname)))
+            {
+                FlPrintFile (ASL_FILE_MAP_OUTPUT, "  // %s (_DDN)",
+                    Description);
+            }
+        }
+
+        FlPrintFile (ASL_FILE_MAP_OUTPUT, "\n");
+        ACPI_FREE (ParentPathname);
+        Info = Info->Next;
+    }
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    MpEmitDeviceTree
+ *
+ * PARAMETERS:  None
+ *
+ * RETURN:      None
+ *
+ * DESCRIPTION: Emit information about all devices within the ACPI namespace.
+ *
+ ******************************************************************************/
+
+static void
+MpEmitDeviceTree (
+    void)
+{
+
+    FlPrintFile (ASL_FILE_MAP_OUTPUT, "\n\nACPI Device Tree\n");
+    FlPrintFile (ASL_FILE_MAP_OUTPUT,     "----------------\n\n");
+
+    FlPrintFile (ASL_FILE_MAP_OUTPUT, "Device Pathname                   "
+        "_HID      Description\n\n");
+
+    /* Walk the namespace from the root */
+
+    (void) AcpiNsWalkNamespace (ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT,
+            ACPI_UINT32_MAX, FALSE, MpEmitOneDevice, NULL, NULL, NULL);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    MpEmitOneDevice
+ *
+ * PARAMETERS:  ACPI_NAMESPACE_WALK callback
+ *
+ * RETURN:      Status
+ *
+ * DESCRIPTION: Emit information about one ACPI device in the namespace. Used
+ *              during dump of all device objects within the namespace.
+ *
+ ******************************************************************************/
+
+static ACPI_STATUS
+MpEmitOneDevice (
+    ACPI_HANDLE             ObjHandle,
+    UINT32                  NestingLevel,
+    void                    *Context,
+    void                    **ReturnValue)
+{
+    char                    *DevicePathname;
+    char                    *DdnString;
+    char                    *HidString;
+    const AH_DEVICE_ID      *HidInfo;
+
+
+    /* Device pathname */
+
+    DevicePathname = AcpiNsGetExternalPathname (
+        ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, ObjHandle));
+
+    FlPrintFile (ASL_FILE_MAP_OUTPUT, "%-32s", DevicePathname);
+
+    /* _HID or _DDN */
+
+    HidString = MpGetHidValue (
+        ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, ObjHandle));
+    FlPrintFile (ASL_FILE_MAP_OUTPUT, "%8s", HidString);
+
+    HidInfo = AcpiAhMatchHardwareId (HidString);
+    if (HidInfo)
+    {
+        FlPrintFile (ASL_FILE_MAP_OUTPUT, "    // %s",
+            HidInfo->Description);
+    }
+    else if ((DdnString = MpGetDdnValue (DevicePathname)))
+    {
+        FlPrintFile (ASL_FILE_MAP_OUTPUT, "    // %s (_DDN)", DdnString);
+    }
+
+    FlPrintFile (ASL_FILE_MAP_OUTPUT, "\n");
+    ACPI_FREE (DevicePathname);
+    return (AE_OK);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    MpXrefDevices
+ *
+ * PARAMETERS:  Info                    - A GPIO Info block
+ *
+ * RETURN:      None
+ *
+ * DESCRIPTION: Cross-reference the parse tree and find all references to the
+ *              specified GPIO device.
+ *
+ ******************************************************************************/
+
+static void
+MpXrefDevices (
+    ACPI_GPIO_INFO          *Info)
+{
+
+    /* Walk the entire parse tree */
+
+    TrWalkParseTree (RootNode, ASL_WALK_VISIT_DOWNWARD,
+        MpNamespaceXrefBegin, NULL, Info);
+
+    if (!Info->References)
+    {
+        FlPrintFile (ASL_FILE_MAP_OUTPUT, "  // **** No references in table");
+    }
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    MpNamespaceXrefBegin
+ *
+ * PARAMETERS:  WALK_PARSE_TREE callback
+ *
+ * RETURN:      Status
+ *
+ * DESCRIPTION: Walk parse tree callback used to cross-reference GPIO pins.
+ *
+ ******************************************************************************/
+
+static ACPI_STATUS
+MpNamespaceXrefBegin (
+    ACPI_PARSE_OBJECT       *Op,
+    UINT32                  Level,
+    void                    *Context)
+{
+    ACPI_GPIO_INFO          *Info = ACPI_CAST_PTR (ACPI_GPIO_INFO, Context);
+    const ACPI_OPCODE_INFO  *OpInfo;
+    char                    *DevicePathname;
+    ACPI_PARSE_OBJECT       *ParentOp;
+    char                    *HidString;
+
+
+    ACPI_FUNCTION_TRACE_PTR (MpNamespaceXrefBegin, Op);
+
+    /*
+     * If this node is the actual declaration of a name
+     * [such as the XXXX name in "Method (XXXX)"],
+     * we are not interested in it here. We only care about names that
+     * are references to other objects within the namespace and the
+     * parent objects of name declarations
+     */
+    if (Op->Asl.CompileFlags & NODE_IS_NAME_DECLARATION)
+    {
+        return (AE_OK);
+    }
+
+    /* We are only interested in opcodes that have an associated name */
+
+    OpInfo = AcpiPsGetOpcodeInfo (Op->Asl.AmlOpcode);
+
+    if ((OpInfo->Flags & AML_NAMED) ||
+        (OpInfo->Flags & AML_CREATE))
+    {
+        return (AE_OK);
+    }
+
+    if ((Op->Asl.ParseOpcode != PARSEOP_NAMESTRING) &&
+        (Op->Asl.ParseOpcode != PARSEOP_NAMESEG)    &&
+        (Op->Asl.ParseOpcode != PARSEOP_METHODCALL))
+    {
+        return (AE_OK);
+    }
+
+    if (!Op->Asl.Node)
+    {
+        return (AE_OK);
+    }
+
+    ParentOp = Op->Asl.Parent;
+    if (ParentOp->Asl.ParseOpcode == PARSEOP_FIELD)
+    {
+        return (AE_OK);
+    }
+
+    if (Op->Asl.Node == Info->TargetNode)
+    {
+        DevicePathname = AcpiNsGetExternalPathname (
+            Info->TargetNode);
+
+        while (ParentOp && (!ParentOp->Asl.Node))
+        {
+            ParentOp = ParentOp->Asl.Parent;
+        }
+
+        if (ParentOp)
+        {
+            DevicePathname = AcpiNsGetExternalPathname (
+                ParentOp->Asl.Node);
+
+            if (!Info->References)
+            {
+                FlPrintFile (ASL_FILE_MAP_OUTPUT, "  // References:");
+            }
+
+            HidString = MpGetHidViaNamestring (DevicePathname);
+
+            FlPrintFile (ASL_FILE_MAP_OUTPUT, " %s [%s]",
+                DevicePathname, HidString);
+
+            Info->References++;
+        }
+    }
+
+    return (AE_OK);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/aslmaputils.c	Sat Oct 25 20:57:55 2014 +0000
@@ -0,0 +1,402 @@
+/******************************************************************************
+ *
+ * Module Name: aslmaputils - Utilities for the resource descriptor/device maps
+ *
+ *****************************************************************************/
+
+/*
+ * Copyright (C) 2000 - 2014, 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 "acpi.h"
+#include "accommon.h"
+#include "acapps.h"
+#include "aslcompiler.h"
+#include "aslcompiler.y.h"
+#include "acinterp.h"
+#include "acnamesp.h"
+#include "amlcode.h"
+
+/* This module used for application-level code only */
+
+#define _COMPONENT          ACPI_COMPILER
+        ACPI_MODULE_NAME    ("aslmaputils")
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    MpGetHidFromParseTree
+ *
+ * PARAMETERS:  HidNode             - Node for a _HID object
+ *
+ * RETURN:      An _HID string value. Automatically converts _HID integers
+ *              to strings. Never NULL.
+ *
+ * DESCRIPTION: Extract a _HID value from the parse tree, not the namespace.
+ *              Used when a fully initialized namespace is not available.
+ *
+ ******************************************************************************/
+
+char *
+MpGetHidFromParseTree (
+    ACPI_NAMESPACE_NODE     *HidNode)
+{
+    ACPI_PARSE_OBJECT       *Op;
+    ACPI_PARSE_OBJECT       *Arg;
+    char                    *HidString;
+
+
+    Op = HidNode->Op;
+
+    switch (Op->Asl.ParseOpcode)
+    {
+    case PARSEOP_NAME:
+
+        Arg = Op->Asl.Child;  /* Get the NameSeg/NameString node */
+        Arg = Arg->Asl.Next;  /* First peer is the object to be associated with the name */
+
+        switch (Arg->Asl.ParseOpcode)
+        {
+        case PARSEOP_STRING_LITERAL:
+
+            return (Arg->Asl.Value.String);
+
+        case PARSEOP_INTEGER:
+
+            /* Convert EISAID to a string */
+
+            HidString = UtStringCacheCalloc (ACPI_EISAID_STRING_SIZE);
+            AcpiExEisaIdToString (HidString, Arg->Asl.Value.Integer);
+            return (HidString);
+
+        default:
+
+            return ("UNKNOWN");
+        }
+
+    default:
+        return ("-No HID-");
+    }
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    MpGetHidValue
+ *
+ * PARAMETERS:  DeviceNode          - Node for parent device
+ *
+ * RETURN:      An _HID string value. Automatically converts _HID integers
+ *              to strings. Never NULL.
+ *
+ * DESCRIPTION: Extract _HID value from within a device scope. Does not
+ *              actually execute a method, just gets the string or integer
+ *              value for the _HID.
+ *
+ ******************************************************************************/
+
+char *
+MpGetHidValue (
+    ACPI_NAMESPACE_NODE     *DeviceNode)
+{
+    ACPI_NAMESPACE_NODE     *HidNode;
+    char                    *HidString;
+    ACPI_STATUS             Status;
+
+
+    Status = AcpiNsGetNode (DeviceNode, METHOD_NAME__HID,
+        ACPI_NS_NO_UPSEARCH, &HidNode);
+    if (ACPI_FAILURE (Status))
+    {
+        goto ErrorExit;
+    }
+
+    /* If only partial namespace, get the _HID from the parse tree */
+
+    if (!HidNode->Object)
+    {
+        return (MpGetHidFromParseTree (HidNode));
+    }
+
+    /* Handle the different _HID flavors */
+
+    switch (HidNode->Type)
+    {
+    case ACPI_TYPE_STRING:
+
+        return (HidNode->Object->String.Pointer);
+
+    case ACPI_TYPE_INTEGER:
+
+        /* Convert EISAID to a string */
+
+        HidString = UtStringCacheCalloc (ACPI_EISAID_STRING_SIZE);
+        AcpiExEisaIdToString (HidString, HidNode->Object->Integer.Value);
+        return (HidString);
+
+    case ACPI_TYPE_METHOD:
+
+        return ("-Method-");
+
+    default:
+
+        FlPrintFile (ASL_FILE_MAP_OUTPUT, "BAD HID TYPE: %u", HidNode->Type);
+        break;
+    }
+
+
+ErrorExit:
+    return ("-No HID-");
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    MpGetHidViaNamestring
+ *
+ * PARAMETERS:  DeviceName          - Namepath for parent device
+ *
+ * RETURN:      _HID string. Never NULL.
+ *
+ * DESCRIPTION: Get a _HID value via a device pathname (instead of just simply
+ *              a device node.)
+ *
+ ******************************************************************************/
+
+char *
+MpGetHidViaNamestring (
+    char                    *DeviceName)
+{
+    ACPI_NAMESPACE_NODE     *DeviceNode;
+    ACPI_STATUS             Status;
+
+
+    Status = AcpiNsGetNode (NULL, DeviceName, ACPI_NS_NO_UPSEARCH,
+        &DeviceNode);
+    if (ACPI_FAILURE (Status))
+    {
+        goto ErrorExit;
+    }
+
+    return (MpGetHidValue (DeviceNode));
+
+
+ErrorExit:
+    return ("-No HID-");
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    MpGetParentDeviceHid
+ *
+ * PARAMETERS:  Op                      - Parse Op to be examined
+ *              TargetNode              - Where the field node is returned
+ *              ParentDeviceName        - Where the node path is returned
+ *
+ * RETURN:      _HID string. Never NULL.
+ *
+ * DESCRIPTION: Find the parent Device or Scope Op, get the full pathname to
+ *              the parent, and get the _HID associated with the parent.
+ *
+ ******************************************************************************/
+
+char *
+MpGetParentDeviceHid (
+    ACPI_PARSE_OBJECT       *Op,
+    ACPI_NAMESPACE_NODE     **TargetNode,
+    char                    **ParentDeviceName)
+{
+    ACPI_NAMESPACE_NODE     *DeviceNode;
+
+
+    /* Find parent Device() or Scope() Op */
+
+    while (Op &&
+        (Op->Asl.AmlOpcode != AML_DEVICE_OP) &&
+        (Op->Asl.AmlOpcode != AML_SCOPE_OP))
+    {
+        Op = Op->Asl.Parent;
+    }
+
+    if (!Op)
+    {
+        FlPrintFile (ASL_FILE_MAP_OUTPUT, " No_Parent_Device ");
+        goto ErrorExit;
+    }
+
+    /* Get the full pathname to the device and the _HID */
+
+    DeviceNode = Op->Asl.Node;
+    if (!DeviceNode)
+    {
+        FlPrintFile (ASL_FILE_MAP_OUTPUT, " No_Device_Node ");
+        goto ErrorExit;
+    }
+
+    *ParentDeviceName = AcpiNsGetExternalPathname (DeviceNode);
+    return (MpGetHidValue (DeviceNode));
+
+
+ErrorExit:
+    return ("-No HID-");
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    MpGetDdnValue
+ *
+ * PARAMETERS:  DeviceName          - Namepath for parent device
+ *
+ * RETURN:      _DDN description string. NULL on failure.
+ *
+ * DESCRIPTION: Execute the _DDN method for the device.
+ *
+ ******************************************************************************/
+
+char *
+MpGetDdnValue (
+    char                    *DeviceName)
+{
+    ACPI_NAMESPACE_NODE     *DeviceNode;
+    ACPI_NAMESPACE_NODE     *DdnNode;
+    ACPI_STATUS             Status;
+
+
+    Status = AcpiNsGetNode (NULL, DeviceName, ACPI_NS_NO_UPSEARCH,
+        &DeviceNode);
+    if (ACPI_FAILURE (Status))
+    {
+        goto ErrorExit;
+    }
+
+    Status = AcpiNsGetNode (DeviceNode, METHOD_NAME__DDN, ACPI_NS_NO_UPSEARCH,
+        &DdnNode);
+    if (ACPI_FAILURE (Status))
+    {
+        goto ErrorExit;
+    }
+
+    if ((DdnNode->Type != ACPI_TYPE_STRING) ||
+        !DdnNode->Object)
+    {
+        goto ErrorExit;
+    }
+
+    return (DdnNode->Object->String.Pointer);
+
+
+ErrorExit:
+    return (NULL);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    MpGetConnectionInfo
+ *
+ * PARAMETERS:  Op                      - Parse Op to be examined
+ *              PinIndex                - Index into GPIO PinList
+ *              TargetNode              - Where the field node is returned
+ *              TargetName              - Where the node path is returned
+ *
+ * RETURN:      A substitute _HID string, indicating that the name is actually
+ *              a field. NULL if the Op does not refer to a Connection.
+ *
+ * DESCRIPTION: Get the Field Unit that corresponds to the PinIndex after
+ *              a Connection() invocation.
+ *
+ ******************************************************************************/
+
+char *
+MpGetConnectionInfo (
+    ACPI_PARSE_OBJECT       *Op,
+    UINT32                  PinIndex,
+    ACPI_NAMESPACE_NODE     **TargetNode,
+    char                    **TargetName)
+{
+    ACPI_PARSE_OBJECT       *NextOp;
+    UINT32                  i;
+
+
+    /*
+     * Handle Connection() here. Find the next named FieldUnit.
+     * Note: we look at the ParseOpcode for the compiler, look
+     * at the AmlOpcode for the disassembler.
+     */
+    if ((Op->Asl.AmlOpcode == AML_INT_CONNECTION_OP) ||
+        (Op->Asl.ParseOpcode == PARSEOP_CONNECTION))
+    {
+        /* Find the correct field unit definition */
+
+        NextOp = Op;
+        for (i = 0; i <= PinIndex;)
+        {
+            NextOp = NextOp->Asl.Next;
+            while (NextOp &&
+                (NextOp->Asl.ParseOpcode != PARSEOP_NAMESEG) &&
+                (NextOp->Asl.AmlOpcode != AML_INT_NAMEDFIELD_OP))
+            {
+                NextOp = NextOp->Asl.Next;
+            }
+
+            if (!NextOp)
+            {
+                return ("UNKNOWN");
+            }
+
+            /* Add length of this field to the current pin index */
+
+            if (NextOp->Asl.ParseOpcode == PARSEOP_NAMESEG)
+            {
+                i += (UINT32) NextOp->Asl.Child->Asl.Value.Integer;
+            }
+            else /* AML_INT_NAMEDFIELD_OP */
+            {
+                i += (UINT32) NextOp->Asl.Value.Integer;
+            }
+        }
+
+        /* Return the node and pathname for the field unit */
+
+        *TargetNode = NextOp->Asl.Node;
+        *TargetName = AcpiNsGetExternalPathname (*TargetNode);
+        return ("-Field-");
+    }
+
+    return (NULL);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/aslmessages.c	Sat Oct 25 20:57:55 2014 +0000
@@ -0,0 +1,409 @@
+/******************************************************************************
+ *
+ * Module Name: aslmessages.c - Compiler error/warning message strings
+ *
+ *****************************************************************************/
+
+/*
+ * Copyright (C) 2000 - 2014, 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"
+
+#define _COMPONENT          ACPI_COMPILER
+        ACPI_MODULE_NAME    ("aslmessages")
+
+
+/*
+ * Strings for message reporting levels, must match error
+ * type string tables in aslmessages.c
+ */
+const char              *AslErrorLevel [ASL_NUM_REPORT_LEVELS] = {
+    "Optimize",
+    "Remark  ",
+    "Warning ",
+    "Warning ",
+    "Warning ",
+    "Error   "
+};
+
+/* All lowercase versions for IDEs */
+
+const char              *AslErrorLevelIde [ASL_NUM_REPORT_LEVELS] = {
+    "optimize",
+    "remark  ",
+    "warning ",
+    "warning ",
+    "warning ",
+    "error   "
+};
+
+
+/*
+ * Actual message strings for each compiler message ID. There are currently
+ * three distinct blocks of error messages (so that they can be expanded
+ * individually):
+ *      Main ASL compiler
+ *      Data Table compiler
+ *      Preprocessor
+ *
+ * NOTE1: These tables must match the enum list of message IDs in the file
+ * aslmessages.h exactly.
+ *
+ * NOTE2: With the introduction of the -vw option to disable specific messages,
+ * new messages should only be added to the end of this list, so that values
+ * for existing messages are not disturbed.
+ */
+
+/* ASL compiler */
+
+const char                      *AslCompilerMsgs [] =
+{
+/*    The zeroth message is reserved */    "",
+/*    ASL_MSG_ALIGNMENT */                  "Must be a multiple of alignment/granularity value",
+/*    ASL_MSG_ALPHANUMERIC_STRING */        "String must be entirely alphanumeric",
+/*    ASL_MSG_AML_NOT_IMPLEMENTED */        "Opcode is not implemented in compiler AML code generator",
+/*    ASL_MSG_ARG_COUNT_HI */               "Too many arguments",
+/*    ASL_MSG_ARG_COUNT_LO */               "Too few arguments",
+/*    ASL_MSG_ARG_INIT */                   "Method argument is not initialized",
+/*    ASL_MSG_BACKWARDS_OFFSET */           "Invalid backwards offset",
+/*    ASL_MSG_BUFFER_LENGTH */              "Effective AML buffer length is zero",
+/*    ASL_MSG_CLOSE */                      "Could not close file",
+/*    ASL_MSG_COMPILER_INTERNAL */          "Internal compiler error",
+/*    ASL_MSG_COMPILER_RESERVED */          "Use of compiler reserved name",
+/*    ASL_MSG_CONNECTION_MISSING */         "A Connection operator is required for this field SpaceId",
+/*    ASL_MSG_CONNECTION_INVALID */         "Invalid OpRegion SpaceId for use of Connection operator",
+/*    ASL_MSG_CONSTANT_EVALUATION */        "Could not evaluate constant expression",
+/*    ASL_MSG_CONSTANT_FOLDED */            "Constant expression evaluated and reduced",
+/*    ASL_MSG_CORE_EXCEPTION */             "From ACPICA Subsystem",
+/*    ASL_MSG_DEBUG_FILE_OPEN */            "Could not open debug file",
+/*    ASL_MSG_DEBUG_FILENAME */             "Could not create debug filename",
+/*    ASL_MSG_DEPENDENT_NESTING */          "Dependent function macros cannot be nested",
+/*    ASL_MSG_DMA_CHANNEL */                "Invalid DMA channel (must be 0-7)",
+/*    ASL_MSG_DMA_LIST */                   "Too many DMA channels (8 max)",
+/*    ASL_MSG_DUPLICATE_CASE */             "Case value already specified",
+/*    ASL_MSG_DUPLICATE_ITEM */             "Duplicate value in list",
+/*    ASL_MSG_EARLY_EOF */                  "Premature end-of-file reached",
+/*    ASL_MSG_ENCODING_LENGTH */            "Package length too long to encode",
+/*    ASL_MSG_EX_INTERRUPT_LIST */          "Too many interrupts (255 max)",
+/*    ASL_MSG_EX_INTERRUPT_LIST_MIN */      "Too few interrupts (1 minimum required)",
+/*    ASL_MSG_EX_INTERRUPT_NUMBER */        "Invalid interrupt number (must be 32 bits)",
+/*    ASL_MSG_FIELD_ACCESS_WIDTH */         "Access width is greater than region size",
+/*    ASL_MSG_FIELD_UNIT_ACCESS_WIDTH */    "Access width of Field Unit extends beyond region limit",
+/*    ASL_MSG_FIELD_UNIT_OFFSET */          "Field Unit extends beyond region limit",
+/*    ASL_MSG_GPE_NAME_CONFLICT */          "Name conflicts with a previous GPE method",
+/*    ASL_MSG_HID_LENGTH */                 "_HID string must be exactly 7 or 8 characters",
+/*    ASL_MSG_HID_PREFIX */                 "_HID prefix must be all uppercase or decimal digits",
+/*    ASL_MSG_HID_SUFFIX */                 "_HID suffix must be all hex digits",
+/*    ASL_MSG_INCLUDE_FILE_OPEN */          "Could not open include file",
+/*    ASL_MSG_INPUT_FILE_OPEN */            "Could not open input file",
+/*    ASL_MSG_INTEGER_LENGTH */             "64-bit integer in 32-bit table, truncating (DSDT version < 2)",
+/*    ASL_MSG_INTEGER_OPTIMIZATION */       "Integer optimized to single-byte AML opcode",
+/*    ASL_MSG_INTERRUPT_LIST */             "Too many interrupts (16 max)",
+/*    ASL_MSG_INTERRUPT_NUMBER */           "Invalid interrupt number (must be 0-15)",
+/*    ASL_MSG_INVALID_ACCESS_SIZE */        "Invalid AccessSize (Maximum is 4 - QWord access)",
+/*    ASL_MSG_INVALID_ADDR_FLAGS */         "Invalid combination of Length and Min/Max fixed flags",
+/*    ASL_MSG_INVALID_CONSTANT_OP */        "Invalid operator in constant expression (not type 3/4/5)",
+/*    ASL_MSG_INVALID_EISAID */             "EISAID string must be of the form \"UUUXXXX\" (3 uppercase, 4 hex digits)",
+/*    ASL_MSG_INVALID_ESCAPE */             "Invalid or unknown escape sequence",
+/*    ASL_MSG_INVALID_GRAN_FIXED */         "Granularity must be zero for fixed Min/Max",
+/*    ASL_MSG_INVALID_GRANULARITY */        "Granularity must be zero or a power of two minus one",
+/*    ASL_MSG_INVALID_LENGTH */             "Length is larger than Min/Max window",
+/*    ASL_MSG_INVALID_LENGTH_FIXED */       "Length is not equal to fixed Min/Max window",
+/*    ASL_MSG_INVALID_MIN_MAX */            "Address Min is greater than Address Max",
+/*    ASL_MSG_INVALID_OPERAND */            "Invalid operand",
+/*    ASL_MSG_INVALID_PERFORMANCE */        "Invalid performance/robustness value",
+/*    ASL_MSG_INVALID_PRIORITY */           "Invalid priority value",
+/*    ASL_MSG_INVALID_STRING */             "Invalid Hex/Octal Escape - Non-ASCII or NULL",
+/*    ASL_MSG_INVALID_TARGET */             "Target operand not allowed in constant expression",
+/*    ASL_MSG_INVALID_TIME */               "Time parameter too long (255 max)",
+/*    ASL_MSG_INVALID_TYPE */               "Invalid type",
+/*    ASL_MSG_INVALID_UUID */               "UUID string must be of the form \"aabbccdd-eeff-gghh-iijj-kkllmmnnoopp\"",
+/*    ASL_MSG_ISA_ADDRESS */                "Maximum 10-bit ISA address (0x3FF)",
+/*    ASL_MSG_LEADING_ASTERISK */           "Invalid leading asterisk",
+/*    ASL_MSG_LIST_LENGTH_LONG */           "Initializer list longer than declared package length",
+/*    ASL_MSG_LIST_LENGTH_SHORT */          "Initializer list shorter than declared package length",
+/*    ASL_MSG_LISTING_FILE_OPEN */          "Could not open listing file",
+/*    ASL_MSG_LISTING_FILENAME */           "Could not create listing filename",
+/*    ASL_MSG_LOCAL_INIT */                 "Method local variable is not initialized",
+/*    ASL_MSG_LOCAL_OUTSIDE_METHOD */       "Local or Arg used outside a control method",
+/*    ASL_MSG_LONG_LINE */                  "Splitting long input line",
+/*    ASL_MSG_MEMORY_ALLOCATION */          "Memory allocation failure",
+/*    ASL_MSG_MISSING_ENDDEPENDENT */       "Missing EndDependentFn() macro in dependent resource list",
+/*    ASL_MSG_MISSING_STARTDEPENDENT */     "Missing StartDependentFn() macro in dependent resource list",
+/*    ASL_MSG_MULTIPLE_DEFAULT */           "More than one Default statement within Switch construct",
+/*    ASL_MSG_MULTIPLE_TYPES */             "Multiple types",
+/*    ASL_MSG_NAME_EXISTS */                "Name already exists in scope",
+/*    ASL_MSG_NAME_OPTIMIZATION */          "NamePath optimized",
+/*    ASL_MSG_NAMED_OBJECT_IN_WHILE */      "Creating a named object in a While loop",
+/*    ASL_MSG_NESTED_COMMENT */             "Nested comment found",
+/*    ASL_MSG_NO_CASES */                   "No Case statements under Switch",
+/*    ASL_MSG_NO_REGION */                  "_REG has no corresponding Operation Region",
+/*    ASL_MSG_NO_RETVAL */                  "Called method returns no value",
+/*    ASL_MSG_NO_WHILE */                   "No enclosing While statement",
+/*    ASL_MSG_NON_ASCII */                  "Invalid characters found in file",
+/*    ASL_MSG_NON_ZERO */                   "Operand evaluates to zero",
+/*    ASL_MSG_NOT_EXIST */                  "Object does not exist",
+/*    ASL_MSG_NOT_FOUND */                  "Object not found or not accessible from scope",
+/*    ASL_MSG_NOT_METHOD */                 "Not a control method, cannot invoke",
+/*    ASL_MSG_NOT_PARAMETER */              "Not a parameter, used as local only",
+/*    ASL_MSG_NOT_REACHABLE */              "Object is not accessible from this scope",
+/*    ASL_MSG_NOT_REFERENCED */             "Object is not referenced",
+/*    ASL_MSG_NULL_DESCRIPTOR */            "Min/Max/Length/Gran are all zero, but no resource tag",
+/*    ASL_MSG_NULL_STRING */                "Invalid zero-length (null) string",
+/*    ASL_MSG_OPEN */                       "Could not open file",
+/*    ASL_MSG_OUTPUT_FILE_OPEN */           "Could not open output AML file",
+/*    ASL_MSG_OUTPUT_FILENAME */            "Could not create output filename",
+/*    ASL_MSG_PACKAGE_LENGTH */             "Effective AML package length is zero",
+/*    ASL_MSG_PREPROCESSOR_FILENAME */      "Could not create preprocessor filename",
+/*    ASL_MSG_READ */                       "Could not read file",
+/*    ASL_MSG_RECURSION */                  "Recursive method call",
+/*    ASL_MSG_REGION_BUFFER_ACCESS */       "Host Operation Region requires BufferAcc access",
+/*    ASL_MSG_REGION_BYTE_ACCESS */         "Host Operation Region requires ByteAcc access",
+/*    ASL_MSG_RESERVED_ARG_COUNT_HI */      "Reserved method has too many arguments",
+/*    ASL_MSG_RESERVED_ARG_COUNT_LO */      "Reserved method has too few arguments",
+/*    ASL_MSG_RESERVED_METHOD */            "Reserved name must be a control method",
+/*    ASL_MSG_RESERVED_NO_RETURN_VAL */     "Reserved method should not return a value",
+/*    ASL_MSG_RESERVED_OPERAND_TYPE */      "Invalid object type for reserved name",
+/*    ASL_MSG_RESERVED_PACKAGE_LENGTH */    "Invalid package length for reserved name",
+/*    ASL_MSG_RESERVED_RETURN_VALUE */      "Reserved method must return a value",
+/*    ASL_MSG_RESERVED_USE */               "Invalid use of reserved name",
+/*    ASL_MSG_RESERVED_WORD */              "Use of reserved name",
+/*    ASL_MSG_RESOURCE_FIELD */             "Resource field name cannot be used as a target",
+/*    ASL_MSG_RESOURCE_INDEX */             "Missing ResourceSourceIndex (required)",
+/*    ASL_MSG_RESOURCE_LIST */              "Too many resource items (internal error)",
+/*    ASL_MSG_RESOURCE_SOURCE */            "Missing ResourceSource string (required)",
+/*    ASL_MSG_RESULT_NOT_USED */            "Result is not used, operator has no effect",
+/*    ASL_MSG_RETURN_TYPES */               "Not all control paths return a value",
+/*    ASL_MSG_SCOPE_FWD_REF */              "Forward references from Scope operator not allowed",
+/*    ASL_MSG_SCOPE_TYPE */                 "Existing object has invalid type for Scope operator",
+/*    ASL_MSG_SEEK */                       "Could not seek file",
+/*    ASL_MSG_SERIALIZED */                 "Control Method marked Serialized",
+/*    ASL_MSG_SERIALIZED_REQUIRED */        "Control Method should be made Serialized",
+/*    ASL_MSG_SINGLE_NAME_OPTIMIZATION */   "NamePath optimized to NameSeg (uses run-time search path)",
+/*    ASL_MSG_SOME_NO_RETVAL */             "Called method may not always return a value",
+/*    ASL_MSG_STRING_LENGTH */              "String literal too long",
+/*    ASL_MSG_SWITCH_TYPE */                "Switch expression is not a static Integer/Buffer/String data type, defaulting to Integer",
+/*    ASL_MSG_SYNC_LEVEL */                 "SyncLevel must be in the range 0-15",
+/*    ASL_MSG_SYNTAX */                     "",
+/*    ASL_MSG_TABLE_SIGNATURE */            "Invalid Table Signature",
+/*    ASL_MSG_TAG_LARGER */                 "ResourceTag larger than Field",
+/*    ASL_MSG_TAG_SMALLER */                "ResourceTag smaller than Field",
+/*    ASL_MSG_TIMEOUT */                    "Result is not used, possible operator timeout will be missed",
+/*    ASL_MSG_TOO_MANY_TEMPS */             "Method requires too many temporary variables (_T_x)",
+/*    ASL_MSG_TRUNCATION */                 "64-bit return value will be truncated to 32 bits (DSDT version < 2)",
+/*    ASL_MSG_UNKNOWN_RESERVED_NAME */      "Unknown reserved name",
+/*    ASL_MSG_UNREACHABLE_CODE */           "Statement is unreachable",
+/*    ASL_MSG_UNSUPPORTED */                "Unsupported feature",
+/*    ASL_MSG_UPPER_CASE */                 "Non-hex letters must be upper case",
+/*    ASL_MSG_VENDOR_LIST */                "Too many vendor data bytes (7 max)",
+/*    ASL_MSG_WRITE */                      "Could not write file",
+/*    ASL_MSG_RANGE */                      "Constant out of range",
+/*    ASL_MSG_BUFFER_ALLOCATION */          "Could not allocate line buffer",
+/*    ASL_MSG_MISSING_DEPENDENCY */         "Missing dependency",
+/*    ASL_MSG_ILLEGAL_FORWARD_REF */        "Illegal forward reference within a method",
+/*    ASL_MSG_ILLEGAL_METHOD_REF */         "Illegal reference across two methods"
+};
+
+/* Table compiler */
+
+const char                      *AslTableCompilerMsgs [] =
+{
+/*    ASL_MSG_BUFFER_ELEMENT */             "Invalid element in buffer initializer list",
+/*    ASL_MSG_DIVIDE_BY_ZERO */             "Expression contains divide-by-zero",
+/*    ASL_MSG_FLAG_VALUE */                 "Flag value is too large",
+/*    ASL_MSG_INTEGER_SIZE */               "Integer too large for target",
+/*    ASL_MSG_INVALID_EXPRESSION */         "Invalid expression",
+/*    ASL_MSG_INVALID_FIELD_NAME */         "Invalid Field Name",
+/*    ASL_MSG_INVALID_HEX_INTEGER */        "Invalid hex integer constant",
+/*    ASL_MSG_OEM_TABLE */                  "OEM table - unknown contents",
+/*    ASL_MSG_RESERVED_VALUE */             "Reserved field",
+/*    ASL_MSG_UNKNOWN_LABEL */              "Label is undefined",
+/*    ASL_MSG_UNKNOWN_SUBTABLE */           "Unknown subtable type",
+/*    ASL_MSG_UNKNOWN_TABLE */              "Unknown ACPI table signature",
+/*    ASL_MSG_ZERO_VALUE */                 "Value must be non-zero"
+};
+
+/* Preprocessor */
+
+const char                      *AslPreprocessorMsgs [] =
+{
+/*    ASL_MSG_DIRECTIVE_SYNTAX */           "Invalid directive syntax",
+/*    ASL_MSG_ENDIF_MISMATCH */             "Mismatched #endif",
+/*    ASL_MSG_ERROR_DIRECTIVE */            "#error",
+/*    ASL_MSG_EXISTING_NAME */              "Name is already defined",
+/*    ASL_MSG_INVALID_INVOCATION */         "Invalid macro invocation",
+/*    ASL_MSG_MACRO_SYNTAX */               "Invalid macro syntax",
+/*    ASL_MSG_TOO_MANY_ARGUMENTS */         "Too many macro arguments",
+/*    ASL_MSG_UNKNOWN_DIRECTIVE */          "Unknown directive",
+/*    ASL_MSG_UNKNOWN_PRAGMA */             "Unknown pragma",
+/*    ASL_MSG_WARNING_DIRECTIVE */          "#warning"
+};
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    AeDecodeMessageId
+ *
+ * PARAMETERS:  MessageId               - ASL message ID (exception code) to be
+ *                                        formatted. Possibly fully encoded.
+ *
+ * RETURN:      A string containing the exception message text.
+ *
+ * DESCRIPTION: This function validates and translates an ASL message ID into
+ *              an ASCII string.
+ *
+ ******************************************************************************/
+
+const char *
+AeDecodeMessageId (
+    UINT16                  MessageId)
+{
+    UINT32                  Index;
+    const char              **MessageTable;
+
+
+    /* Main ASL Compiler messages */
+
+    if (MessageId <= ASL_MSG_MAIN_COMPILER_END)
+    {
+        MessageTable = AslCompilerMsgs;
+        Index = MessageId;
+
+        if (Index >= ACPI_ARRAY_LENGTH (AslCompilerMsgs))
+        {
+            return ("[Unknown ASL Compiler exception ID]");
+        }
+    }
+
+    /* Data Table Compiler messages */
+
+    else if (MessageId <= ASL_MSG_TABLE_COMPILER_END)
+    {
+        MessageTable = AslTableCompilerMsgs;
+        Index = MessageId - ASL_MSG_TABLE_COMPILER;
+
+        if (Index >= ACPI_ARRAY_LENGTH (AslTableCompilerMsgs))
+        {
+            return ("[Unknown Table Compiler exception ID]");
+        }
+    }
+
+    /* Preprocessor messages */
+
+    else if (MessageId <= ASL_MSG_PREPROCESSOR_END)
+    {
+        MessageTable = AslPreprocessorMsgs;
+        Index = MessageId - ASL_MSG_PREPROCESSOR;
+
+        if (Index >= ACPI_ARRAY_LENGTH (AslPreprocessorMsgs))
+        {
+            return ("[Unknown Preprocesor exception ID]");
+        }
+    }
+
+    /* Everything else is unknown */
+
+    else
+    {
+        return ("[Unknown exception/component ID]");
+    }
+
+    return (MessageTable[Index]);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    AeDecodeExceptionLevel
+ *
+ * PARAMETERS:  Level               - The ASL error level to be decoded
+ *
+ * RETURN:      A string containing the error level text
+ *
+ * DESCRIPTION: This function validates and translates an ASL error level into
+ *              an ASCII string.
+ *
+ ******************************************************************************/
+
+const char *
+AeDecodeExceptionLevel (
+    UINT8                   Level)
+{
+    /* Range check on Level */
+
+    if (Level >= ACPI_ARRAY_LENGTH (AslErrorLevel))
+    {
+        return ("Unknown exception level");
+    }
+
+    /* Differentiate the string type to be used (IDE is all lower case) */
+
+    if (Gbl_VerboseErrors)
+    {
+        return (AslErrorLevel[Level]);
+    }
+
+    return (AslErrorLevelIde[Level]);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    AeBuildFullExceptionCode
+ *
+ * PARAMETERS:  Level               - ASL error level
+ *              MessageId           - ASL exception code to be formatted
+ *
+ * RETURN:      Fully encoded exception code
+ *
+ * DESCRIPTION: Build the full exception code from the error level and the
+ *              actual message ID.
+ *
+ ******************************************************************************/
+
+UINT16
+AeBuildFullExceptionCode (
+    UINT8                   Level,
+    UINT16                  MessageId)
+{
+
+    /*
+     * Error level is in the thousands slot (error/warning/remark, etc.)
+     * Error codes are 0 - 999
+     */
+    return (((Level + 1) * 1000) + MessageId);
+}
--- a/sys/external/bsd/acpica/dist/compiler/aslmessages.h	Sat Oct 25 19:08:48 2014 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/aslmessages.h	Sat Oct 25 20:57:55 2014 +0000
@@ -5,7 +5,7 @@
  *****************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2013, Intel Corp.
+ * Copyright (C) 2000 - 2014, Intel Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,11 +41,12 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-
 #ifndef __ASLMESSAGES_H
 #define __ASLMESSAGES_H
 
 
+/* These values must match error type string tables in aslmessages.c */
+
 typedef enum
 {
     ASL_OPTIMIZATION = 0,
@@ -58,43 +59,41 @@
 
 } ASL_MESSAGE_TYPES;
 
-#ifdef ASL_EXCEPTIONS
 
-/* Strings for message reporting levels, must match values above */
-
-const char              *AslErrorLevel [ASL_NUM_REPORT_LEVELS] = {
-    "Optimize",
-    "Remark  ",
-    "Warning ",
-    "Warning ",
-    "Warning ",
-    "Error   "
-};
-
-/* All lowercase versions for IDEs */
-
-const char              *AslErrorLevelIde [ASL_NUM_REPORT_LEVELS] = {
-    "optimize",
-    "remark  ",
-    "warning ",
-    "warning ",
-    "warning ",
-    "error   "
-};
-
-#define ASL_ERROR_LEVEL_LENGTH          8       /* Length of strings above */
-#endif
+#define ASL_ERROR_LEVEL_LENGTH          8 /* Length of strings for types above */
 
 /*
- * Values for all compiler messages.
+ * Exception code blocks, 0 - 999
+ * Available for new exception blocks: 600 - 999
+ */
+#define ASL_MSG_MAIN_COMPILER           0       /* 0 - 299 */
+#define ASL_MSG_MAIN_COMPILER_END       299
+
+#define ASL_MSG_TABLE_COMPILER          300     /* 300 - 499 */
+#define ASL_MSG_TABLE_COMPILER_END      499
+
+#define ASL_MSG_PREPROCESSOR            500     /* 500 - 599 */
+#define ASL_MSG_PREPROCESSOR_END        599
+
+
+/*
+ * Values (message IDs) for all compiler messages. There are currently
+ * three distinct blocks of error messages (so that they can be expanded
+ * individually):
+ *      Main ASL compiler
+ *      Data Table compiler
+ *      Preprocessor
  *
- * NOTE: With the introduction of the -vw option to disable specific messages,
- * new messages should only be added to the end of this list, so that values
- * for existing messages are not disturbed.
+ * NOTE1: This list must match the tables of message strings in the file
+ * aslmessages.c exactly.
+ *
+ * NOTE2: With the introduction of the -vw option to disable specific
+ * messages, new messages should only be added to the end of these
+ * lists, so that values for existing messages are not disturbed.
  */
 typedef enum
 {
-    ASL_MSG_RESERVED = 0,
+    ASL_MSG_RESERVED = ASL_MSG_MAIN_COMPILER,
 
     ASL_MSG_ALIGNMENT,
     ASL_MSG_ALPHANUMERIC_STRING,
@@ -236,23 +235,13 @@
     ASL_MSG_WRITE,
     ASL_MSG_RANGE,
     ASL_MSG_BUFFER_ALLOCATION,
-
-    /* These messages are used by the Preprocessor only */
+    ASL_MSG_MISSING_DEPENDENCY,
+    ASL_MSG_ILLEGAL_FORWARD_REF,
+    ASL_MSG_ILLEGAL_METHOD_REF,
 
-    ASL_MSG_DIRECTIVE_SYNTAX,
-    ASL_MSG_ENDIF_MISMATCH,
-    ASL_MSG_ERROR_DIRECTIVE,
-    ASL_MSG_EXISTING_NAME,
-    ASL_MSG_INVALID_INVOCATION,
-    ASL_MSG_MACRO_SYNTAX,
-    ASL_MSG_TOO_MANY_ARGUMENTS,
-    ASL_MSG_UNKNOWN_DIRECTIVE,
-    ASL_MSG_UNKNOWN_PRAGMA,
-    ASL_MSG_WARNING_DIRECTIVE,
+    /* These messages are used by the Data Table compiler only */
 
-    /* These messages are used by the data table compiler only */
-
-    ASL_MSG_BUFFER_ELEMENT,
+    ASL_MSG_BUFFER_ELEMENT = ASL_MSG_TABLE_COMPILER,
     ASL_MSG_DIVIDE_BY_ZERO,
     ASL_MSG_FLAG_VALUE,
     ASL_MSG_INTEGER_SIZE,
@@ -264,194 +253,22 @@
     ASL_MSG_UNKNOWN_LABEL,
     ASL_MSG_UNKNOWN_SUBTABLE,
     ASL_MSG_UNKNOWN_TABLE,
-    ASL_MSG_ZERO_VALUE
+    ASL_MSG_ZERO_VALUE,
+
+    /* These messages are used by the Preprocessor only */
+
+    ASL_MSG_DIRECTIVE_SYNTAX = ASL_MSG_PREPROCESSOR,
+    ASL_MSG_ENDIF_MISMATCH,
+    ASL_MSG_ERROR_DIRECTIVE,
+    ASL_MSG_EXISTING_NAME,
+    ASL_MSG_INVALID_INVOCATION,
+    ASL_MSG_MACRO_SYNTAX,
+    ASL_MSG_TOO_MANY_ARGUMENTS,
+    ASL_MSG_UNKNOWN_DIRECTIVE,
+    ASL_MSG_UNKNOWN_PRAGMA,
+    ASL_MSG_WARNING_DIRECTIVE,
 
 } ASL_MESSAGE_IDS;
 
 
-#ifdef ASL_EXCEPTIONS
-
-/*
- * Actual message strings for each compiler message.
- *
- * NOTE: With the introduction of the -vw option to disable specific messages,
- * new messages should only be added to the end of this list, so that values
- * for existing messages are not disturbed.
- */
-char                        *AslMessages [] =
-{
-/*    The zeroth message is reserved */    "",
-/*    ASL_MSG_ALIGNMENT */                  "Must be a multiple of alignment/granularity value",
-/*    ASL_MSG_ALPHANUMERIC_STRING */        "String must be entirely alphanumeric",
-/*    ASL_MSG_AML_NOT_IMPLEMENTED */        "Opcode is not implemented in compiler AML code generator",
-/*    ASL_MSG_ARG_COUNT_HI */               "Too many arguments",
-/*    ASL_MSG_ARG_COUNT_LO */               "Too few arguments",
-/*    ASL_MSG_ARG_INIT */                   "Method argument is not initialized",
-/*    ASL_MSG_BACKWARDS_OFFSET */           "Invalid backwards offset",
-/*    ASL_MSG_BUFFER_LENGTH */              "Effective AML buffer length is zero",
-/*    ASL_MSG_CLOSE */                      "Could not close file",
-/*    ASL_MSG_COMPILER_INTERNAL */          "Internal compiler error",
-/*    ASL_MSG_COMPILER_RESERVED */          "Use of compiler reserved name",
-/*    ASL_MSG_CONNECTION_MISSING */         "A Connection operator is required for this field SpaceId",
-/*    ASL_MSG_CONNECTION_INVALID */         "Invalid OpRegion SpaceId for use of Connection operator",
-/*    ASL_MSG_CONSTANT_EVALUATION */        "Could not evaluate constant expression",
-/*    ASL_MSG_CONSTANT_FOLDED */            "Constant expression evaluated and reduced",
-/*    ASL_MSG_CORE_EXCEPTION */             "From ACPI CA Subsystem",
-/*    ASL_MSG_DEBUG_FILE_OPEN */            "Could not open debug file",
-/*    ASL_MSG_DEBUG_FILENAME */             "Could not create debug filename",
-/*    ASL_MSG_DEPENDENT_NESTING */          "Dependent function macros cannot be nested",\
-/*    ASL_MSG_DMA_CHANNEL */                "Invalid DMA channel (must be 0-7)",
-/*    ASL_MSG_DMA_LIST */                   "Too many DMA channels (8 max)",
-/*    ASL_MSG_DUPLICATE_CASE */             "Case value already specified",
-/*    ASL_MSG_DUPLICATE_ITEM */             "Duplicate value in list",
-/*    ASL_MSG_EARLY_EOF */                  "Premature end-of-file reached",
-/*    ASL_MSG_ENCODING_LENGTH */            "Package length too long to encode",
-/*    ASL_MSG_EX_INTERRUPT_LIST */          "Too many interrupts (255 max)",
-/*    ASL_MSG_EX_INTERRUPT_LIST_MIN */      "Too few interrupts (1 minimum required)",
-/*    ASL_MSG_EX_INTERRUPT_NUMBER */        "Invalid interrupt number (must be 32 bits)",
-/*    ASL_MSG_FIELD_ACCESS_WIDTH */         "Access width is greater than region size",
-/*    ASL_MSG_FIELD_UNIT_ACCESS_WIDTH */    "Access width of Field Unit extends beyond region limit",
-/*    ASL_MSG_FIELD_UNIT_OFFSET */          "Field Unit extends beyond region limit",
-/*    ASL_MSG_GPE_NAME_CONFLICT */          "Name conflicts with a previous GPE method",
-/*    ASL_MSG_HID_LENGTH */                 "_HID string must be exactly 7 or 8 characters",
-/*    ASL_MSG_HID_PREFIX */                 "_HID prefix must be all uppercase or decimal digits",
-/*    ASL_MSG_HID_SUFFIX */                 "_HID suffix must be all hex digits",
-/*    ASL_MSG_INCLUDE_FILE_OPEN */          "Could not open include file",
-/*    ASL_MSG_INPUT_FILE_OPEN */            "Could not open input file",
-/*    ASL_MSG_INTEGER_LENGTH */             "64-bit integer in 32-bit table, truncating (DSDT version < 2)",
-/*    ASL_MSG_INTEGER_OPTIMIZATION */       "Integer optimized to single-byte AML opcode",
-/*    ASL_MSG_INTERRUPT_LIST */             "Too many interrupts (16 max)",
-/*    ASL_MSG_INTERRUPT_NUMBER */           "Invalid interrupt number (must be 0-15)",
-/*    ASL_MSG_INVALID_ACCESS_SIZE */        "Invalid AccessSize (Maximum is 4 - QWord access)",
-/*    ASL_MSG_INVALID_ADDR_FLAGS */         "Invalid combination of Length and Min/Max fixed flags",
-/*    ASL_MSG_INVALID_CONSTANT_OP */        "Invalid operator in constant expression (not type 3/4/5)",
-/*    ASL_MSG_INVALID_EISAID */             "EISAID string must be of the form \"UUUXXXX\" (3 uppercase, 4 hex digits)",
-/*    ASL_MSG_INVALID_ESCAPE */             "Invalid or unknown escape sequence",
-/*    ASL_MSG_INVALID_GRAN_FIXED */         "Granularity must be zero for fixed Min/Max",
-/*    ASL_MSG_INVALID_GRANULARITY */        "Granularity must be zero or a power of two minus one",
-/*    ASL_MSG_INVALID_LENGTH */             "Length is larger than Min/Max window",
-/*    ASL_MSG_INVALID_LENGTH_FIXED */       "Length is not equal to fixed Min/Max window",
-/*    ASL_MSG_INVALID_MIN_MAX */            "Address Min is greater than Address Max",
-/*    ASL_MSG_INVALID_OPERAND */            "Invalid operand",
-/*    ASL_MSG_INVALID_PERFORMANCE */        "Invalid performance/robustness value",
-/*    ASL_MSG_INVALID_PRIORITY */           "Invalid priority value",
-/*    ASL_MSG_INVALID_STRING */             "Invalid Hex/Octal Escape - Non-ASCII or NULL",
-/*    ASL_MSG_INVALID_TARGET */             "Target operand not allowed in constant expression",
-/*    ASL_MSG_INVALID_TIME */               "Time parameter too long (255 max)",
-/*    ASL_MSG_INVALID_TYPE */               "Invalid type",
-/*    ASL_MSG_INVALID_UUID */               "UUID string must be of the form \"aabbccdd-eeff-gghh-iijj-kkllmmnnoopp\"",
-/*    ASL_MSG_ISA_ADDRESS */                "Maximum 10-bit ISA address (0x3FF)",
-/*    ASL_MSG_LEADING_ASTERISK */           "Invalid leading asterisk",
-/*    ASL_MSG_LIST_LENGTH_LONG */           "Initializer list longer than declared package length",
-/*    ASL_MSG_LIST_LENGTH_SHORT */          "Initializer list shorter than declared package length",
-/*    ASL_MSG_LISTING_FILE_OPEN */          "Could not open listing file",
-/*    ASL_MSG_LISTING_FILENAME */           "Could not create listing filename",
-/*    ASL_MSG_LOCAL_INIT */                 "Method local variable is not initialized",
-/*    ASL_MSG_LOCAL_OUTSIDE_METHOD */       "Local or Arg used outside a control method",
-/*    ASL_MSG_LONG_LINE */                  "Splitting long input line",
-/*    ASL_MSG_MEMORY_ALLOCATION */          "Memory allocation failure",
-/*    ASL_MSG_MISSING_ENDDEPENDENT */       "Missing EndDependentFn() macro in dependent resource list",
-/*    ASL_MSG_MISSING_STARTDEPENDENT */     "Missing StartDependentFn() macro in dependent resource list",
-/*    ASL_MSG_MULTIPLE_DEFAULT */           "More than one Default statement within Switch construct",
-/*    ASL_MSG_MULTIPLE_TYPES */             "Multiple types",
-/*    ASL_MSG_NAME_EXISTS */                "Name already exists in scope",
-/*    ASL_MSG_NAME_OPTIMIZATION */          "NamePath optimized",
-/*    ASL_MSG_NAMED_OBJECT_IN_WHILE */      "Creating a named object in a While loop",
-/*    ASL_MSG_NESTED_COMMENT */             "Nested comment found",
-/*    ASL_MSG_NO_CASES */                   "No Case statements under Switch",
-/*    ASL_MSG_NO_REGION */                  "_REG has no corresponding Operation Region",
-/*    ASL_MSG_NO_RETVAL */                  "Called method returns no value",
-/*    ASL_MSG_NO_WHILE */                   "No enclosing While statement",
-/*    ASL_MSG_NON_ASCII */                  "Invalid characters found in file",
-/*    ASL_MSG_NON_ZERO */                   "Operand evaluates to zero",
-/*    ASL_MSG_NOT_EXIST */                  "Object does not exist",
-/*    ASL_MSG_NOT_FOUND */                  "Object not found or not accessible from scope",
-/*    ASL_MSG_NOT_METHOD */                 "Not a control method, cannot invoke",
-/*    ASL_MSG_NOT_PARAMETER */              "Not a parameter, used as local only",
-/*    ASL_MSG_NOT_REACHABLE */              "Object is not accessible from this scope",
-/*    ASL_MSG_NOT_REFERENCED */             "Object is not referenced",
-/*    ASL_MSG_NULL_DESCRIPTOR */            "Min/Max/Length/Gran are all zero, but no resource tag",
-/*    ASL_MSG_NULL_STRING */                "Invalid zero-length (null) string",
-/*    ASL_MSG_OPEN */                       "Could not open file",
-/*    ASL_MSG_OUTPUT_FILE_OPEN */           "Could not open output AML file",
-/*    ASL_MSG_OUTPUT_FILENAME */            "Could not create output filename",
-/*    ASL_MSG_PACKAGE_LENGTH */             "Effective AML package length is zero",
-/*    ASL_MSG_PREPROCESSOR_FILENAME */      "Could not create preprocessor filename",
-/*    ASL_MSG_READ */                       "Could not read file",
-/*    ASL_MSG_RECURSION */                  "Recursive method call",
-/*    ASL_MSG_REGION_BUFFER_ACCESS */       "Host Operation Region requires BufferAcc access",
-/*    ASL_MSG_REGION_BYTE_ACCESS */         "Host Operation Region requires ByteAcc access",
-/*    ASL_MSG_RESERVED_ARG_COUNT_HI */      "Reserved method has too many arguments",
-/*    ASL_MSG_RESERVED_ARG_COUNT_LO */      "Reserved method has too few arguments",
-/*    ASL_MSG_RESERVED_METHOD */            "Reserved name must be a control method",
-/*    ASL_MSG_RESERVED_NO_RETURN_VAL */     "Reserved method should not return a value",
-/*    ASL_MSG_RESERVED_OPERAND_TYPE */      "Invalid object type for reserved name",
-/*    ASL_MSG_RESERVED_PACKAGE_LENGTH */    "Invalid package length for reserved name",
-/*    ASL_MSG_RESERVED_RETURN_VALUE */      "Reserved method must return a value",
-/*    ASL_MSG_RESERVED_USE */               "Invalid use of reserved name",
-/*    ASL_MSG_RESERVED_WORD */              "Use of reserved name",
-/*    ASL_MSG_RESOURCE_FIELD */             "Resource field name cannot be used as a target",
-/*    ASL_MSG_RESOURCE_INDEX */             "Missing ResourceSourceIndex (required)",
-/*    ASL_MSG_RESOURCE_LIST */              "Too many resource items (internal error)",
-/*    ASL_MSG_RESOURCE_SOURCE */            "Missing ResourceSource string (required)",
-/*    ASL_MSG_RESULT_NOT_USED */            "Result is not used, operator has no effect",
-/*    ASL_MSG_RETURN_TYPES */               "Not all control paths return a value",
-/*    ASL_MSG_SCOPE_FWD_REF */              "Forward references from Scope operator not allowed",
-/*    ASL_MSG_SCOPE_TYPE */                 "Existing object has invalid type for Scope operator",
-/*    ASL_MSG_SEEK */                       "Could not seek file",
-/*    ASL_MSG_SERIALIZED */                 "Control Method marked Serialized",
-/*    ASL_MSG_SERIALIZED_REQUIRED */        "Control Method should be made Serialized",
-/*    ASL_MSG_SINGLE_NAME_OPTIMIZATION */   "NamePath optimized to NameSeg (uses run-time search path)",
-/*    ASL_MSG_SOME_NO_RETVAL */             "Called method may not always return a value",
-/*    ASL_MSG_STRING_LENGTH */              "String literal too long",
-/*    ASL_MSG_SWITCH_TYPE */                "Switch expression is not a static Integer/Buffer/String data type, defaulting to Integer",
-/*    ASL_MSG_SYNC_LEVEL */                 "SyncLevel must be in the range 0-15",
-/*    ASL_MSG_SYNTAX */                     "",
-/*    ASL_MSG_TABLE_SIGNATURE */            "Invalid Table Signature",
-/*    ASL_MSG_TAG_LARGER */                 "ResourceTag larger than Field",
-/*    ASL_MSG_TAG_SMALLER */                "ResourceTag smaller than Field",
-/*    ASL_MSG_TIMEOUT */                    "Result is not used, possible operator timeout will be missed",
-/*    ASL_MSG_TOO_MANY_TEMPS */             "Method requires too many temporary variables (_T_x)",
-/*    ASL_MSG_TRUNCATION */                 "64-bit return value will be truncated to 32 bits (DSDT version < 2)",
-/*    ASL_MSG_UNKNOWN_RESERVED_NAME */      "Unknown reserved name",
-/*    ASL_MSG_UNREACHABLE_CODE */           "Statement is unreachable",
-/*    ASL_MSG_UNSUPPORTED */                "Unsupported feature",
-/*    ASL_MSG_UPPER_CASE */                 "Non-hex letters must be upper case",
-/*    ASL_MSG_VENDOR_LIST */                "Too many vendor data bytes (7 max)",
-/*    ASL_MSG_WRITE */                      "Could not write file",
-/*    ASL_MSG_RANGE */                      "Constant out of range",
-/*    ASL_MSG_BUFFER_ALLOCATION */          "Could not allocate line buffer",
-
-/* Preprocessor */
-
-/*    ASL_MSG_DIRECTIVE_SYNTAX */           "Invalid directive syntax",
-/*    ASL_MSG_ENDIF_MISMATCH */             "Mismatched #endif",
-/*    ASL_MSG_ERROR_DIRECTIVE */            "#error",
-/*    ASL_MSG_EXISTING_NAME */              "Name is already defined",
-/*    ASL_MSG_INVALID_INVOCATION */         "Invalid macro invocation",
-/*    ASL_MSG_MACRO_SYNTAX */               "Invalid macro syntax",
-/*    ASL_MSG_TOO_MANY_ARGUMENTS */         "Too many macro arguments",
-/*    ASL_MSG_UNKNOWN_DIRECTIVE */          "Unknown directive",
-/*    ASL_MSG_UNKNOWN_PRAGMA */             "Unknown pragma",
-/*    ASL_MSG_WARNING_DIRECTIVE */          "#warning",
-
-/* Table compiler */
-
-/*    ASL_MSG_BUFFER_ELEMENT */             "Invalid element in buffer initializer list",
-/*    ASL_MSG_DIVIDE_BY_ZERO */             "Expression contains divide-by-zero",
-/*    ASL_MSG_FLAG_VALUE */                 "Flag value is too large",
-/*    ASL_MSG_INTEGER_SIZE */               "Integer too large for target",
-/*    ASL_MSG_INVALID_EXPRESSION */         "Invalid expression",
-/*    ASL_MSG_INVALID_FIELD_NAME */         "Invalid Field Name",
-/*    ASL_MSG_INVALID_HEX_INTEGER */        "Invalid hex integer constant",
-/*    ASL_MSG_OEM_TABLE */                  "OEM table - unknown contents",
-/*    ASL_MSG_RESERVED_VALUE */             "Reserved field must be zero",
-/*    ASL_MSG_UNKNOWN_LABEL */              "Label is undefined",
-/*    ASL_MSG_UNKNOWN_SUBTABLE */           "Unknown subtable type",
-/*    ASL_MSG_UNKNOWN_TABLE */              "Unknown ACPI table signature",
-/*    ASL_MSG_ZERO_VALUE */                 "Value must be non-zero"
-};
-
-#endif  /* ASL_EXCEPTIONS */
-
 #endif  /* __ASLMESSAGES_H */
--- a/sys/external/bsd/acpica/dist/compiler/aslmethod.c	Sat Oct 25 19:08:48 2014 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/aslmethod.c	Sat Oct 25 20:57:55 2014 +0000
@@ -5,7 +5,7 @@
  *****************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2013, Intel Corp.
+ * Copyright (C) 2000 - 2014, Intel Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,7 +41,6 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-
 #include "aslcompiler.h"
 #include "aslcompiler.y.h"
 #include "acparser.h"
@@ -108,7 +107,42 @@
 
         WalkInfo->MethodStack = MethodInfo;
 
-        /* Get the name node, ignored here */
+        /*
+         * Special handling for _PSx methods. Dependency rules (same scope):
+         *
+         * 1) _PS0 - One of these must exist: _PS1, _PS2, _PS3
+         * 2) _PS1/_PS2/_PS3: A _PS0 must exist
+         */
+        if (ACPI_COMPARE_NAME (METHOD_NAME__PS0, Op->Asl.NameSeg))
+        {
+            /* For _PS0, one of _PS1/_PS2/_PS3 must exist */
+
+            if ((!ApFindNameInScope (METHOD_NAME__PS1, Op)) &&
+                (!ApFindNameInScope (METHOD_NAME__PS2, Op)) &&
+                (!ApFindNameInScope (METHOD_NAME__PS3, Op)))
+            {
+                AslError (ASL_WARNING, ASL_MSG_MISSING_DEPENDENCY, Op,
+                    "_PS0 requires one of _PS1/_PS2/_PS3 in same scope");
+            }
+        }
+        else if (
+            ACPI_COMPARE_NAME (METHOD_NAME__PS1, Op->Asl.NameSeg) ||
+            ACPI_COMPARE_NAME (METHOD_NAME__PS2, Op->Asl.NameSeg) ||
+            ACPI_COMPARE_NAME (METHOD_NAME__PS3, Op->Asl.NameSeg))
+        {
+            /* For _PS1/_PS2/_PS3, a _PS0 must exist */
+
+            if (!ApFindNameInScope (METHOD_NAME__PS0, Op))
+            {
+                sprintf (MsgBuffer,
+                    "%4.4s requires _PS0 in same scope", Op->Asl.NameSeg);
+
+                AslError (ASL_WARNING, ASL_MSG_MISSING_DEPENDENCY, Op,
+                    MsgBuffer);
+            }
+        }
+
+        /* Get the name node */
 
         Next = Op->Asl.Child;
 
@@ -359,6 +393,17 @@
         break;
 
     case PARSEOP_DEVICE:
+
+        Next = Op->Asl.Child;
+
+        if (!ApFindNameInScope (METHOD_NAME__HID, Next) &&
+            !ApFindNameInScope (METHOD_NAME__ADR, Next))
+        {
+            AslError (ASL_WARNING, ASL_MSG_MISSING_DEPENDENCY, Op,
+                "Device object requires a _HID or _ADR in same scope");
+        }
+        break;
+
     case PARSEOP_EVENT:
     case PARSEOP_MUTEX:
     case PARSEOP_OPERATIONREGION:
@@ -412,6 +457,7 @@
                 AnCheckId (Next, ASL_TYPE_CID);
             }
         }
+
         break;
 
     default:
--- a/sys/external/bsd/acpica/dist/compiler/aslnamesp.c	Sat Oct 25 19:08:48 2014 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/aslnamesp.c	Sat Oct 25 20:57:55 2014 +0000
@@ -5,7 +5,7 @@
  *****************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2013, Intel Corp.
+ * Copyright (C) 2000 - 2014, Intel Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,7 +41,6 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-
 #include "aslcompiler.h"
 #include "aslcompiler.y.h"
 #include "acnamesp.h"
--- a/sys/external/bsd/acpica/dist/compiler/asloffset.c	Sat Oct 25 19:08:48 2014 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/asloffset.c	Sat Oct 25 20:57:55 2014 +0000
@@ -5,7 +5,7 @@
  *****************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2013, Intel Corp.
+ * Copyright (C) 2000 - 2014, Intel Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
--- a/sys/external/bsd/acpica/dist/compiler/aslopcodes.c	Sat Oct 25 19:08:48 2014 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/aslopcodes.c	Sat Oct 25 20:57:55 2014 +0000
@@ -5,7 +5,7 @@
  *****************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2013, Intel Corp.
+ * Copyright (C) 2000 - 2014, Intel Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,7 +41,6 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-
 #include "aslcompiler.h"
 #include "aslcompiler.y.h"
 #include "amlcode.h"
@@ -403,6 +402,7 @@
     ACPI_PARSE_OBJECT       *BufferOp;
     ACPI_PARSE_OBJECT       *BufferLengthOp;
     ACPI_PARSE_OBJECT       *BufferDataOp;
+    ASL_RESOURCE_INFO       Info;
     UINT8                   State;
 
 
@@ -417,8 +417,10 @@
     BufferLengthOp = BufferOp->Asl.Child;
     BufferDataOp = BufferLengthOp->Asl.Next;
 
+    Info.DescriptorTypeOp = BufferDataOp->Asl.Next;
+    Info.CurrentByteOffset = 0;
     State = ACPI_RSTATE_NORMAL;
-    Rnode = RsDoOneResourceDescriptor (BufferDataOp->Asl.Next, 0, &State);
+    Rnode = RsDoOneResourceDescriptor (&Info, &State);
     if (!Rnode)
     {
         return; /* error */
@@ -623,10 +625,10 @@
             (UINT32) ((UINT8) (InString[1] - 0x40)) << 21 |
             (UINT32) ((UINT8) (InString[2] - 0x40)) << 16 |
 
-            (UtHexCharToValue (InString[3])) << 12 |
-            (UtHexCharToValue (InString[4])) << 8  |
-            (UtHexCharToValue (InString[5])) << 4  |
-             UtHexCharToValue (InString[6]);
+            (AcpiUtAsciiCharToHex (InString[3])) << 12 |
+            (AcpiUtAsciiCharToHex (InString[4])) << 8  |
+            (AcpiUtAsciiCharToHex (InString[5])) << 4  |
+             AcpiUtAsciiCharToHex (InString[6]);
 
         /* Swap to little-endian to get final ID (see function header) */
 
@@ -666,7 +668,7 @@
     ACPI_PARSE_OBJECT       *Op)
 {
     char                    *InString;
-    char                    *Buffer;
+    UINT8                   *Buffer;
     ACPI_STATUS             Status = AE_OK;
     ACPI_PARSE_OBJECT       *NewOp;
 
@@ -681,7 +683,7 @@
     }
     else
     {
-        (void) AuConvertStringToUuid (InString, Buffer);
+        AcpiUtConvertStringToUuid (InString, Buffer);
     }
 
     /* Change Op to a Buffer */
--- a/sys/external/bsd/acpica/dist/compiler/asloperands.c	Sat Oct 25 19:08:48 2014 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/asloperands.c	Sat Oct 25 20:57:55 2014 +0000
@@ -5,7 +5,7 @@
  *****************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2013, Intel Corp.
+ * Copyright (C) 2000 - 2014, Intel Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,7 +41,6 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-
 #include "aslcompiler.h"
 #include "aslcompiler.y.h"
 #include "amlcode.h"
@@ -913,8 +912,8 @@
          * We will use the AML filename that is embedded in the source file
          * for the output filename.
          */
-        Filename = ACPI_ALLOCATE (strlen (Gbl_DirectoryPath) +
-                    strlen ((char *) Child->Asl.Value.Buffer) + 1);
+        Filename = UtStringCacheCalloc (strlen (Gbl_DirectoryPath) +
+            strlen ((char *) Child->Asl.Value.Buffer) + 1);
 
         /* Prepend the current directory path */
 
@@ -969,7 +968,7 @@
     if (Child->Asl.Value.String)
     {
         Length = ACPI_STRLEN (Child->Asl.Value.String);
-        Gbl_TableId = AcpiOsAllocate (Length + 1);
+        Gbl_TableId = UtStringCacheCalloc (Length + 1);
         ACPI_STRCPY (Gbl_TableId, Child->Asl.Value.String);
 
         /*
--- a/sys/external/bsd/acpica/dist/compiler/aslopt.c	Sat Oct 25 19:08:48 2014 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/aslopt.c	Sat Oct 25 20:57:55 2014 +0000
@@ -5,7 +5,7 @@
  *****************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2013, Intel Corp.
+ * Copyright (C) 2000 - 2014, Intel Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,7 +41,6 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-
 #include "aslcompiler.h"
 #include "aslcompiler.y.h"
 
@@ -168,7 +167,7 @@
 
     /* We must allocate a new string for the name (TargetPath gets deleted) */
 
-    *NewPath = ACPI_ALLOCATE_ZEROED (ACPI_NAME_SIZE + 1);
+    *NewPath = UtStringCacheCalloc (ACPI_NAME_SIZE + 1);
     ACPI_STRCPY (*NewPath, Path);
 
     if (ACPI_STRNCMP (*NewPath, "_T_", 3))
@@ -749,7 +748,7 @@
         HowMuchShorter = (AmlNameStringLength - ACPI_STRLEN (NewPath));
         OptTotal += HowMuchShorter;
 
-        ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, 
+        ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS,
             " REDUCED BY %2u (TOTAL SAVED %2u)",
             (UINT32) HowMuchShorter, OptTotal));
 
--- a/sys/external/bsd/acpica/dist/compiler/asloptions.c	Sat Oct 25 19:08:48 2014 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/asloptions.c	Sat Oct 25 20:57:55 2014 +0000
@@ -5,7 +5,7 @@
  *****************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2013, Intel Corp.
+ * Copyright (C) 2000 - 2014, Intel Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -118,8 +118,7 @@
     /* Next parameter must be the input filename */
 
     if (!argv[AcpiGbl_Optind] &&
-        !Gbl_DisasmFlag &&
-        !Gbl_GetAllTables)
+        !Gbl_DisasmFlag)
     {
         printf ("Missing input filename\n");
         BadCommandLine = TRUE;
@@ -169,7 +168,7 @@
 
     /* Get the command line options */
 
-    while ((j = AcpiGetopt (argc, argv, ASL_SUPPORTED_OPTIONS)) != EOF) switch (j)
+    while ((j = AcpiGetopt (argc, argv, ASL_SUPPORTED_OPTIONS)) != ACPI_OPT_END) switch (j)
     {
     case '@':   /* Begin a response file */
 
@@ -270,6 +269,7 @@
         /* Get entire list of external files */
 
         AcpiGbl_Optind--;
+        argv[AcpiGbl_Optind] = AcpiGbl_Optarg;
 
         while (argv[AcpiGbl_Optind] &&
               (argv[AcpiGbl_Optind][0] != '-'))
@@ -318,9 +318,8 @@
 
     case 'g':   /* Get all ACPI tables */
 
-        Gbl_GetAllTables = TRUE;
-        Gbl_DoCompile = FALSE;
-        break;
+        printf ("-g option is deprecated, use acpidump utility instead\n");
+        exit (1);
 
     case 'h':
 
@@ -414,6 +413,13 @@
             Gbl_PreprocessorOutputFlag = TRUE;
             break;
 
+        case 'm':
+
+            /* Produce hardware map summary file */
+
+            Gbl_MapfileFlag = TRUE;
+            break;
+
         case 'n':
 
             /* Produce namespace file */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/aslparser.y	Sat Oct 25 20:57:55 2014 +0000
@@ -0,0 +1,132 @@
+%{
+/******************************************************************************
+ *
+ * Module Name: aslparser.y - Master Bison/Yacc input file for iASL
+ *
+ *****************************************************************************/
+
+/*
+ * Copyright (C) 2000 - 2014, 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 "acpi.h"
+#include "accommon.h"
+
+#define _COMPONENT          ACPI_COMPILER
+        ACPI_MODULE_NAME    ("aslparse")
+
+/*
+ * Global Notes:
+ *
+ * October 2005: The following list terms have been optimized (from the
+ * original ASL grammar in the ACPI specification) to force the immediate
+ * reduction of each list item so that the parse stack use doesn't increase on
+ * each list element and possibly overflow on very large lists (>4000 items).
+ * This dramatically reduces use of the parse stack overall.
+ *
+ *      ArgList, TermList, Objectlist, ByteList, DWordList, PackageList,
+ *      ResourceMacroList, and FieldUnitList
+ */
+
+void *
+AslLocalAllocate (
+    unsigned int            Size);
+
+/* Bison/yacc configuration */
+
+#define static
+#undef malloc
+#define malloc              AslLocalAllocate
+#undef alloca
+#define alloca              AslLocalAllocate
+#undef yytname
+#define yytname             AslCompilername
+
+#define YYINITDEPTH         600             /* State stack depth */
+#define YYDEBUG             1               /* Enable debug output */
+#define YYERROR_VERBOSE     1               /* Verbose error messages */
+#define YYFLAG              -32768
+
+/* Define YYMALLOC/YYFREE to prevent redefinition errors  */
+
+#define YYMALLOC            AslLocalAllocate
+#define YYFREE              ACPI_FREE
+%}
+
+/*
+ * Declare the type of values in the grammar
+ */
+%union {
+    UINT64              i;
+    char                *s;
+    ACPI_PARSE_OBJECT   *n;
+}
+
+/*
+ * These shift/reduce conflicts are expected. There should be zero
+ * reduce/reduce conflicts.
+ */
+%expect 86
+
+/*! [Begin] no source code translation */
+
+/*
+ * The M4 macro processor is used to bring in the parser items,
+ * in order to keep this master file smaller, and to break up
+ * the various parser items.
+ */
+m4_define(NoEcho)
+
+/* Token types */
+
+m4_include(asltokens.y)
+
+/* Production types/names */
+
+m4_include(asltypes.y)
+%%
+
+/* Production rules */
+
+m4_include(aslrules.y)
+%%
+
+/*! [End] no source code translation !*/
+
+/* Local support functions in C */
+
+m4_include(aslsupport.y)
--- a/sys/external/bsd/acpica/dist/compiler/aslresource.c	Sat Oct 25 19:08:48 2014 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/aslresource.c	Sat Oct 25 20:57:55 2014 +0000
@@ -5,7 +5,7 @@
  *****************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2013, Intel Corp.
+ * Copyright (C) 2000 - 2014, Intel Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,7 +41,6 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-
 #include "aslcompiler.h"
 #include "aslcompiler.y.h"
 #include "amlcode.h"
@@ -123,22 +122,10 @@
         return;
     }
 
-    /* Special case for Memory24, values are compressed */
-
-    if (Type == ACPI_RESOURCE_NAME_MEMORY24)
-    {
-        if (!Alignment) /* Alignment==0 means 64K - no invalid alignment */
-        {
-            Alignment = ACPI_UINT16_MAX + 1;
-        }
-
-        Minimum <<= 8;
-        Maximum <<= 8;
-        Length *= 256;
-    }
-
-    /* IO descriptor has different definition of min/max, don't check */
-
+    /*
+     * Range checks for Memory24 and Memory32.
+     * IO descriptor has different definition of min/max, don't check.
+     */
     if (Type != ACPI_RESOURCE_NAME_IO)
     {
         /* Basic checks on Min/Max/Length */
@@ -151,6 +138,19 @@
         {
             AslError (ASL_ERROR, ASL_MSG_INVALID_LENGTH, LengthOp, NULL);
         }
+
+        /* Special case for Memory24, min/max values are compressed */
+
+        if (Type == ACPI_RESOURCE_NAME_MEMORY24)
+        {
+            if (!Alignment) /* Alignment==0 means 64K alignment */
+            {
+                Alignment = ACPI_UINT16_MAX + 1;
+            }
+
+            Minimum <<= 8;
+            Maximum <<= 8;
+        }
     }
 
     /* Alignment of zero is not in ACPI spec, but is used to mean byte acc */
@@ -645,8 +645,7 @@
 
 ASL_RESOURCE_NODE *
 RsDoOneResourceDescriptor (
-    ACPI_PARSE_OBJECT       *DescriptorTypeOp,
-    UINT32                  CurrentByteOffset,
+    ASL_RESOURCE_INFO       *Info,
     UINT8                   *State)
 {
     ASL_RESOURCE_NODE       *Rnode = NULL;
@@ -654,36 +653,31 @@
 
     /* Construct the resource */
 
-    switch (DescriptorTypeOp->Asl.ParseOpcode)
+    switch (Info->DescriptorTypeOp->Asl.ParseOpcode)
     {
     case PARSEOP_DMA:
 
-        Rnode = RsDoDmaDescriptor (DescriptorTypeOp,
-                    CurrentByteOffset);
+        Rnode = RsDoDmaDescriptor (Info);
         break;
 
     case PARSEOP_FIXEDDMA:
 
-        Rnode = RsDoFixedDmaDescriptor (DescriptorTypeOp,
-                    CurrentByteOffset);
+        Rnode = RsDoFixedDmaDescriptor (Info);
         break;
 
     case PARSEOP_DWORDIO:
 
-        Rnode = RsDoDwordIoDescriptor (DescriptorTypeOp,
-                    CurrentByteOffset);
+        Rnode = RsDoDwordIoDescriptor (Info);
         break;
 
     case PARSEOP_DWORDMEMORY:
 
-        Rnode = RsDoDwordMemoryDescriptor (DescriptorTypeOp,
-                    CurrentByteOffset);
+        Rnode = RsDoDwordMemoryDescriptor (Info);
         break;
 
     case PARSEOP_DWORDSPACE:
 
-        Rnode = RsDoDwordSpaceDescriptor (DescriptorTypeOp,
-                    CurrentByteOffset);
+        Rnode = RsDoDwordSpaceDescriptor (Info);
         break;
 
     case PARSEOP_ENDDEPENDENTFN:
@@ -693,13 +687,13 @@
         case ACPI_RSTATE_NORMAL:
 
             AslError (ASL_ERROR, ASL_MSG_MISSING_STARTDEPENDENT,
-                DescriptorTypeOp, NULL);
+                Info->DescriptorTypeOp, NULL);
             break;
 
         case ACPI_RSTATE_START_DEPENDENT:
 
             AslError (ASL_ERROR, ASL_MSG_DEPENDENT_NESTING,
-                DescriptorTypeOp, NULL);
+                Info->DescriptorTypeOp, NULL);
             break;
 
         case ACPI_RSTATE_DEPENDENT_LIST:
@@ -709,104 +703,87 @@
         }
 
         *State = ACPI_RSTATE_NORMAL;
-        Rnode = RsDoEndDependentDescriptor (DescriptorTypeOp,
-                    CurrentByteOffset);
+        Rnode = RsDoEndDependentDescriptor (Info);
         break;
 
     case PARSEOP_ENDTAG:
 
-        Rnode = RsDoEndTagDescriptor (DescriptorTypeOp,
-                    CurrentByteOffset);
+        Rnode = RsDoEndTagDescriptor (Info);
         break;
 
     case PARSEOP_EXTENDEDIO:
 
-        Rnode = RsDoExtendedIoDescriptor (DescriptorTypeOp,
-                    CurrentByteOffset);
+        Rnode = RsDoExtendedIoDescriptor (Info);
         break;
 
     case PARSEOP_EXTENDEDMEMORY:
 
-        Rnode = RsDoExtendedMemoryDescriptor (DescriptorTypeOp,
-                    CurrentByteOffset);
+        Rnode = RsDoExtendedMemoryDescriptor (Info);
         break;
 
     case PARSEOP_EXTENDEDSPACE:
 
-        Rnode = RsDoExtendedSpaceDescriptor (DescriptorTypeOp,
-                    CurrentByteOffset);
+        Rnode = RsDoExtendedSpaceDescriptor (Info);
         break;
 
     case PARSEOP_FIXEDIO:
 
-        Rnode = RsDoFixedIoDescriptor (DescriptorTypeOp,
-                    CurrentByteOffset);
+        Rnode = RsDoFixedIoDescriptor (Info);
         break;
 
     case PARSEOP_INTERRUPT:
 
-        Rnode = RsDoInterruptDescriptor (DescriptorTypeOp,
-                    CurrentByteOffset);
+        Rnode = RsDoInterruptDescriptor (Info);
         break;
 
     case PARSEOP_IO:
 
-        Rnode = RsDoIoDescriptor (DescriptorTypeOp,
-                    CurrentByteOffset);
+        Rnode = RsDoIoDescriptor (Info);
         break;
 
     case PARSEOP_IRQ:
 
-        Rnode = RsDoIrqDescriptor (DescriptorTypeOp,
-                    CurrentByteOffset);
+        Rnode = RsDoIrqDescriptor (Info);
         break;
 
     case PARSEOP_IRQNOFLAGS:
 
-        Rnode = RsDoIrqNoFlagsDescriptor (DescriptorTypeOp,
-                    CurrentByteOffset);
+        Rnode = RsDoIrqNoFlagsDescriptor (Info);
         break;
 
     case PARSEOP_MEMORY24:
 
-        Rnode = RsDoMemory24Descriptor (DescriptorTypeOp,
-                    CurrentByteOffset);
+        Rnode = RsDoMemory24Descriptor (Info);
         break;
 
     case PARSEOP_MEMORY32:
 
-        Rnode = RsDoMemory32Descriptor (DescriptorTypeOp,
-                    CurrentByteOffset);
+        Rnode = RsDoMemory32Descriptor (Info);
         break;
 
     case PARSEOP_MEMORY32FIXED:
 
-        Rnode = RsDoMemory32FixedDescriptor (DescriptorTypeOp,
-                    CurrentByteOffset);
+        Rnode = RsDoMemory32FixedDescriptor (Info);
         break;
 
     case PARSEOP_QWORDIO:
 
-        Rnode = RsDoQwordIoDescriptor (DescriptorTypeOp,
-                    CurrentByteOffset);
+        Rnode = RsDoQwordIoDescriptor (Info);
         break;
 
     case PARSEOP_QWORDMEMORY:
 
-        Rnode = RsDoQwordMemoryDescriptor (DescriptorTypeOp,
-                    CurrentByteOffset);
+        Rnode = RsDoQwordMemoryDescriptor (Info);
         break;
 
     case PARSEOP_QWORDSPACE:
 
-        Rnode = RsDoQwordSpaceDescriptor (DescriptorTypeOp,
-                    CurrentByteOffset);
+        Rnode = RsDoQwordSpaceDescriptor (Info);
         break;
 
     case PARSEOP_REGISTER:
 
-        Rnode = RsDoGeneralRegisterDescriptor (DescriptorTypeOp,
-                    CurrentByteOffset);
+        Rnode = RsDoGeneralRegisterDescriptor (Info);
         break;
 
     case PARSEOP_STARTDEPENDENTFN:
@@ -816,7 +793,7 @@
         case ACPI_RSTATE_START_DEPENDENT:
 
             AslError (ASL_ERROR, ASL_MSG_DEPENDENT_NESTING,
-                DescriptorTypeOp, NULL);
+                Info->DescriptorTypeOp, NULL);
             break;
 
         case ACPI_RSTATE_NORMAL:
@@ -827,8 +804,7 @@
         }
 
         *State = ACPI_RSTATE_START_DEPENDENT;
-        Rnode = RsDoStartDependentDescriptor (DescriptorTypeOp,
-                    CurrentByteOffset);
+        Rnode = RsDoStartDependentDescriptor (Info);
         *State = ACPI_RSTATE_DEPENDENT_LIST;
         break;
 
@@ -839,7 +815,7 @@
         case ACPI_RSTATE_START_DEPENDENT:
 
             AslError (ASL_ERROR, ASL_MSG_DEPENDENT_NESTING,
-                DescriptorTypeOp, NULL);
+                Info->DescriptorTypeOp, NULL);
             break;
 
         case ACPI_RSTATE_NORMAL:
@@ -850,69 +826,58 @@
         }
 
         *State = ACPI_RSTATE_START_DEPENDENT;
-        Rnode = RsDoStartDependentNoPriDescriptor (DescriptorTypeOp,
-                    CurrentByteOffset);
+        Rnode = RsDoStartDependentNoPriDescriptor (Info);
         *State = ACPI_RSTATE_DEPENDENT_LIST;
         break;
 
     case PARSEOP_VENDORLONG:
 
-        Rnode = RsDoVendorLargeDescriptor (DescriptorTypeOp,
-                    CurrentByteOffset);
+        Rnode = RsDoVendorLargeDescriptor (Info);
         break;
 
     case PARSEOP_VENDORSHORT:
 
-        Rnode = RsDoVendorSmallDescriptor (DescriptorTypeOp,
-                    CurrentByteOffset);
+        Rnode = RsDoVendorSmallDescriptor (Info);
         break;
 
     case PARSEOP_WORDBUSNUMBER:
 
-        Rnode = RsDoWordBusNumberDescriptor (DescriptorTypeOp,
-                    CurrentByteOffset);
+        Rnode = RsDoWordBusNumberDescriptor (Info);
         break;
 
     case PARSEOP_WORDIO:
 
-        Rnode = RsDoWordIoDescriptor (DescriptorTypeOp,
-                    CurrentByteOffset);
+        Rnode = RsDoWordIoDescriptor (Info);
         break;
 
     case PARSEOP_WORDSPACE:
 
-        Rnode = RsDoWordSpaceDescriptor (DescriptorTypeOp,
-                    CurrentByteOffset);
+        Rnode = RsDoWordSpaceDescriptor (Info);
         break;
 
     case PARSEOP_GPIO_INT:
 
-        Rnode = RsDoGpioIntDescriptor (DescriptorTypeOp,
-                    CurrentByteOffset);
+        Rnode = RsDoGpioIntDescriptor (Info);
         break;
 
     case PARSEOP_GPIO_IO:
 
-        Rnode = RsDoGpioIoDescriptor (DescriptorTypeOp,
-                    CurrentByteOffset);
+        Rnode = RsDoGpioIoDescriptor (Info);
         break;
 
     case PARSEOP_I2C_SERIALBUS:
 
-        Rnode = RsDoI2cSerialBusDescriptor (DescriptorTypeOp,
-                    CurrentByteOffset);
+        Rnode = RsDoI2cSerialBusDescriptor (Info);
         break;
 
     case PARSEOP_SPI_SERIALBUS:
 
-        Rnode = RsDoSpiSerialBusDescriptor (DescriptorTypeOp,
-                    CurrentByteOffset);
+        Rnode = RsDoSpiSerialBusDescriptor (Info);
         break;
 
     case PARSEOP_UART_SERIALBUS:
 
-        Rnode = RsDoUartSerialBusDescriptor (DescriptorTypeOp,
-                    CurrentByteOffset);
+        Rnode = RsDoUartSerialBusDescriptor (Info);
         break;
 
     case PARSEOP_DEFAULT_ARG:
@@ -923,7 +888,7 @@
     default:
 
         printf ("Unknown resource descriptor type [%s]\n",
-                    DescriptorTypeOp->Asl.ParseOpName);
+                    Info->DescriptorTypeOp->Asl.ParseOpName);
         break;
     }
 
@@ -932,14 +897,14 @@
      * This allows the resource to be installed in the namespace so that
      * references to the descriptor can be resolved.
      */
-    DescriptorTypeOp->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG;
-    DescriptorTypeOp->Asl.CompileFlags = NODE_IS_RESOURCE_DESC;
-    DescriptorTypeOp->Asl.Value.Integer = CurrentByteOffset;
+    Info->DescriptorTypeOp->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG;
+    Info->DescriptorTypeOp->Asl.CompileFlags = NODE_IS_RESOURCE_DESC;
+    Info->DescriptorTypeOp->Asl.Value.Integer = Info->CurrentByteOffset;
 
     if (Rnode)
     {
-        DescriptorTypeOp->Asl.FinalAmlLength = Rnode->BufferLength;
-        DescriptorTypeOp->Asl.Extra = ((AML_RESOURCE *) Rnode->Buffer)->DescriptorType;
+        Info->DescriptorTypeOp->Asl.FinalAmlLength = Rnode->BufferLength;
+        Info->DescriptorTypeOp->Asl.Extra = ((AML_RESOURCE *) Rnode->Buffer)->DescriptorType;
     }
 
     return (Rnode);
@@ -1023,6 +988,7 @@
     ASL_RESOURCE_NODE       HeadRnode;
     ASL_RESOURCE_NODE       *PreviousRnode;
     ASL_RESOURCE_NODE       *Rnode;
+    ASL_RESOURCE_INFO       Info;
     UINT8                   State;
 
 
@@ -1055,9 +1021,22 @@
     PreviousRnode = &HeadRnode;
     while (DescriptorTypeOp)
     {
+        /* Save information for optional mapfile */
+
+        if (Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_CONNECTION)
+        {
+            Info.MappingOp = Op->Asl.Parent;
+        }
+        else
+        {
+            Info.MappingOp = DescriptorTypeOp;
+        }
+
+        Info.DescriptorTypeOp = DescriptorTypeOp;
+        Info.CurrentByteOffset = CurrentByteOffset;
+
         DescriptorTypeOp->Asl.CompileFlags |= NODE_IS_RESOURCE_DESC;
-        Rnode = RsDoOneResourceDescriptor (DescriptorTypeOp, CurrentByteOffset,
-                    &State);
+        Rnode = RsDoOneResourceDescriptor (&Info, &State);
 
         /*
          * Update current byte offset to indicate the number of bytes from the
--- a/sys/external/bsd/acpica/dist/compiler/aslrestype1.c	Sat Oct 25 19:08:48 2014 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/aslrestype1.c	Sat Oct 25 20:57:55 2014 +0000
@@ -5,7 +5,7 @@
  *****************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2013, Intel Corp.
+ * Copyright (C) 2000 - 2014, Intel Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,7 +41,6 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-
 #include "aslcompiler.h"
 #include "aslcompiler.y.h"
 
@@ -65,9 +64,7 @@
  *
  * FUNCTION:    RsDoEndTagDescriptor
  *
- * PARAMETERS:  Op                  - Parent resource descriptor parse node
- *              CurrentByteOffset   - Offset into the resource template AML
- *                                    buffer (to track references to the desc)
+ * PARAMETERS:  Info                - Parse Op and resource template offset
  *
  * RETURN:      Completed resource node
  *
@@ -77,8 +74,7 @@
 
 ASL_RESOURCE_NODE *
 RsDoEndTagDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset)
+    ASL_RESOURCE_INFO       *Info)
 {
     AML_RESOURCE            *Descriptor;
     ASL_RESOURCE_NODE       *Rnode;
@@ -99,9 +95,7 @@
  *
  * FUNCTION:    RsDoEndDependentDescriptor
  *
- * PARAMETERS:  Op                  - Parent resource descriptor parse node
- *              CurrentByteOffset   - Offset into the resource template AML
- *                                    buffer (to track references to the desc)
+ * PARAMETERS:  Info                - Parse Op and resource template offset
  *
  * RETURN:      Completed resource node
  *
@@ -111,8 +105,7 @@
 
 ASL_RESOURCE_NODE *
 RsDoEndDependentDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset)
+    ASL_RESOURCE_INFO       *Info)
 {
     AML_RESOURCE            *Descriptor;
     ASL_RESOURCE_NODE       *Rnode;
@@ -131,9 +124,7 @@
  *
  * FUNCTION:    RsDoMemory24Descriptor
  *
- * PARAMETERS:  Op                  - Parent resource descriptor parse node
- *              CurrentByteOffset   - Offset into the resource template AML
- *                                    buffer (to track references to the desc)
+ * PARAMETERS:  Info                - Parse Op and resource template offset
  *
  * RETURN:      Completed resource node
  *
@@ -143,8 +134,7 @@
 
 ASL_RESOURCE_NODE *
 RsDoMemory24Descriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset)
+    ASL_RESOURCE_INFO       *Info)
 {
     AML_RESOURCE            *Descriptor;
     ACPI_PARSE_OBJECT       *InitializerOp;
@@ -152,10 +142,12 @@
     ACPI_PARSE_OBJECT       *MaxOp = NULL;
     ACPI_PARSE_OBJECT       *LengthOp = NULL;
     ASL_RESOURCE_NODE       *Rnode;
+    UINT32                  CurrentByteOffset;
     UINT32                  i;
 
 
-    InitializerOp = Op->Asl.Child;
+    InitializerOp = Info->DescriptorTypeOp->Asl.Child;
+    CurrentByteOffset = Info->CurrentByteOffset;
     Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_MEMORY24));
 
     Descriptor = Rnode->Buffer;
@@ -208,7 +200,7 @@
 
         case 5: /* Name */
 
-            UtAttachNamepathToOwner (Op, InitializerOp);
+            UtAttachNamepathToOwner (Info->DescriptorTypeOp, InitializerOp);
             break;
 
         default:
@@ -227,7 +219,7 @@
         Descriptor->Memory24.Maximum,
         Descriptor->Memory24.AddressLength,
         Descriptor->Memory24.Alignment,
-        MinOp, MaxOp, LengthOp, NULL, Op);
+        MinOp, MaxOp, LengthOp, NULL, Info->DescriptorTypeOp);
 
     return (Rnode);
 }
@@ -237,9 +229,7 @@
  *
  * FUNCTION:    RsDoMemory32Descriptor
  *
- * PARAMETERS:  Op                  - Parent resource descriptor parse node
- *              CurrentByteOffset   - Offset into the resource template AML
- *                                    buffer (to track references to the desc)
+ * PARAMETERS:  Info                - Parse Op and resource template offset
  *
  * RETURN:      Completed resource node
  *
@@ -249,8 +239,7 @@
 
 ASL_RESOURCE_NODE *
 RsDoMemory32Descriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset)
+    ASL_RESOURCE_INFO       *Info)
 {
     AML_RESOURCE            *Descriptor;
     ACPI_PARSE_OBJECT       *InitializerOp;
@@ -259,10 +248,12 @@
     ACPI_PARSE_OBJECT       *LengthOp = NULL;
     ACPI_PARSE_OBJECT       *AlignOp = NULL;
     ASL_RESOURCE_NODE       *Rnode;
+    UINT32                  CurrentByteOffset;
     UINT32                  i;
 
 
-    InitializerOp = Op->Asl.Child;
+    InitializerOp = Info->DescriptorTypeOp->Asl.Child;
+    CurrentByteOffset = Info->CurrentByteOffset;
     Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_MEMORY32));
 
     Descriptor = Rnode->Buffer;
@@ -316,7 +307,7 @@
 
         case 5: /* Name */
 
-            UtAttachNamepathToOwner (Op, InitializerOp);
+            UtAttachNamepathToOwner (Info->DescriptorTypeOp, InitializerOp);
             break;
 
         default:
@@ -335,7 +326,7 @@
         Descriptor->Memory32.Maximum,
         Descriptor->Memory32.AddressLength,
         Descriptor->Memory32.Alignment,
-        MinOp, MaxOp, LengthOp, AlignOp, Op);
+        MinOp, MaxOp, LengthOp, AlignOp, Info->DescriptorTypeOp);
 
     return (Rnode);
 }
@@ -345,9 +336,7 @@
  *
  * FUNCTION:    RsDoMemory32FixedDescriptor
  *
- * PARAMETERS:  Op                  - Parent resource descriptor parse node
- *              CurrentByteOffset   - Offset into the resource template AML
- *                                    buffer (to track references to the desc)
+ * PARAMETERS:  Info                - Parse Op and resource template offset
  *
  * RETURN:      Completed resource node
  *
@@ -357,16 +346,17 @@
 
 ASL_RESOURCE_NODE *
 RsDoMemory32FixedDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset)
+    ASL_RESOURCE_INFO       *Info)
 {
     AML_RESOURCE            *Descriptor;
     ACPI_PARSE_OBJECT       *InitializerOp;
     ASL_RESOURCE_NODE       *Rnode;
+    UINT32                  CurrentByteOffset;
     UINT32                  i;
 
 
-    InitializerOp = Op->Asl.Child;
+    InitializerOp = Info->DescriptorTypeOp->Asl.Child;
+    CurrentByteOffset = Info->CurrentByteOffset;
     Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_FIXED_MEMORY32));
 
     Descriptor = Rnode->Buffer;
@@ -402,7 +392,7 @@
 
         case 3: /* Name */
 
-            UtAttachNamepathToOwner (Op, InitializerOp);
+            UtAttachNamepathToOwner (Info->DescriptorTypeOp, InitializerOp);
             break;
 
         default:
@@ -422,9 +412,7 @@
  *
  * FUNCTION:    RsDoStartDependentDescriptor
  *
- * PARAMETERS:  Op                  - Parent resource descriptor parse node
- *              CurrentByteOffset   - Offset into the resource template AML
- *                                    buffer (to track references to the desc)
+ * PARAMETERS:  Info                - Parse Op and resource template offset
  *
  * RETURN:      Completed resource node
  *
@@ -434,19 +422,21 @@
 
 ASL_RESOURCE_NODE *
 RsDoStartDependentDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset)
+    ASL_RESOURCE_INFO       *Info)
 {
     AML_RESOURCE            *Descriptor;
     ACPI_PARSE_OBJECT       *InitializerOp;
     ASL_RESOURCE_NODE       *Rnode;
     ASL_RESOURCE_NODE       *PreviousRnode;
     ASL_RESOURCE_NODE       *NextRnode;
+    ASL_RESOURCE_INFO       NextInfo;
+    UINT32                  CurrentByteOffset;
     UINT32                  i;
     UINT8                   State;
 
 
-    InitializerOp = Op->Asl.Child;
+    InitializerOp = Info->DescriptorTypeOp->Asl.Child;
+    CurrentByteOffset = Info->CurrentByteOffset;
     Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_START_DEPENDENT));
 
     PreviousRnode = Rnode;
@@ -492,8 +482,10 @@
 
         default:
 
-            NextRnode = RsDoOneResourceDescriptor  (InitializerOp,
-                        CurrentByteOffset, &State);
+            NextInfo.CurrentByteOffset = CurrentByteOffset;
+            NextInfo.DescriptorTypeOp = InitializerOp;
+
+            NextRnode = RsDoOneResourceDescriptor (&NextInfo, &State);
 
             /*
              * Update current byte offset to indicate the number of bytes from the
@@ -517,9 +509,7 @@
  *
  * FUNCTION:    RsDoStartDependentNoPriDescriptor
  *
- * PARAMETERS:  Op                  - Parent resource descriptor parse node
- *              CurrentByteOffset   - Offset into the resource template AML
- *                                    buffer (to track references to the desc)
+ * PARAMETERS:  Info                - Parse Op and resource template offset
  *
  * RETURN:      Completed resource node
  *
@@ -529,18 +519,20 @@
 
 ASL_RESOURCE_NODE *
 RsDoStartDependentNoPriDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset)
+    ASL_RESOURCE_INFO       *Info)
 {
     AML_RESOURCE            *Descriptor;
     ACPI_PARSE_OBJECT       *InitializerOp;
     ASL_RESOURCE_NODE       *Rnode;
     ASL_RESOURCE_NODE       *PreviousRnode;
     ASL_RESOURCE_NODE       *NextRnode;
+    ASL_RESOURCE_INFO       NextInfo;
+    UINT32                  CurrentByteOffset;
     UINT8                   State;
 
 
-    InitializerOp = Op->Asl.Child;
+    InitializerOp = Info->DescriptorTypeOp->Asl.Child;
+    CurrentByteOffset = Info->CurrentByteOffset;
     Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_START_DEPENDENT_NOPRIO));
 
     Descriptor = Rnode->Buffer;
@@ -557,8 +549,10 @@
     State = ACPI_RSTATE_START_DEPENDENT;
     while (InitializerOp)
     {
-        NextRnode = RsDoOneResourceDescriptor  (InitializerOp,
-                        CurrentByteOffset, &State);
+        NextInfo.CurrentByteOffset = CurrentByteOffset;
+        NextInfo.DescriptorTypeOp = InitializerOp;
+
+        NextRnode = RsDoOneResourceDescriptor (&NextInfo, &State);
 
         /*
          * Update current byte offset to indicate the number of bytes from the
@@ -579,9 +573,7 @@
  *
  * FUNCTION:    RsDoVendorSmallDescriptor
  *
- * PARAMETERS:  Op                  - Parent resource descriptor parse node
- *              CurrentByteOffset   - Offset into the resource template AML
- *                                    buffer (to track references to the desc)
+ * PARAMETERS:  Info                - Parse Op and resource template offset
  *
  * RETURN:      Completed resource node
  *
@@ -591,8 +583,7 @@
 
 ASL_RESOURCE_NODE *
 RsDoVendorSmallDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset)
+    ASL_RESOURCE_INFO       *Info)
 {
     AML_RESOURCE            *Descriptor;
     ACPI_PARSE_OBJECT       *InitializerOp;
@@ -601,7 +592,7 @@
     UINT32                  i;
 
 
-    InitializerOp = Op->Asl.Child;
+    InitializerOp = Info->DescriptorTypeOp->Asl.Child;
 
     /* Allocate worst case - 7 vendor bytes */
 
--- a/sys/external/bsd/acpica/dist/compiler/aslrestype1i.c	Sat Oct 25 19:08:48 2014 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/aslrestype1i.c	Sat Oct 25 20:57:55 2014 +0000
@@ -5,7 +5,7 @@
  *****************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2013, Intel Corp.
+ * Copyright (C) 2000 - 2014, Intel Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,7 +41,6 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-
 #include "aslcompiler.h"
 #include "aslcompiler.y.h"
 
@@ -63,9 +62,7 @@
  *
  * FUNCTION:    RsDoDmaDescriptor
  *
- * PARAMETERS:  Op                  - Parent resource descriptor parse node
- *              CurrentByteOffset   - Offset into the resource template AML
- *                                    buffer (to track references to the desc)
+ * PARAMETERS:  Info                - Parse Op and resource template offset
  *
  * RETURN:      Completed resource node
  *
@@ -75,18 +72,19 @@
 
 ASL_RESOURCE_NODE *
 RsDoDmaDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset)
+    ASL_RESOURCE_INFO       *Info)
 {
     AML_RESOURCE            *Descriptor;
     ACPI_PARSE_OBJECT       *InitializerOp;
     ASL_RESOURCE_NODE       *Rnode;
+    UINT32                  CurrentByteOffset;
     UINT32                  i;
     UINT8                   DmaChannelMask = 0;
     UINT8                   DmaChannels = 0;
 
 
-    InitializerOp = Op->Asl.Child;
+    InitializerOp = Info->DescriptorTypeOp->Asl.Child;
+    CurrentByteOffset = Info->CurrentByteOffset;
     Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_DMA));
 
     Descriptor = Rnode->Buffer;
@@ -122,7 +120,7 @@
 
         case 3: /* Name */
 
-            UtAttachNamepathToOwner (Op, InitializerOp);
+            UtAttachNamepathToOwner (Info->DescriptorTypeOp, InitializerOp);
             break;
 
         default:
@@ -184,9 +182,7 @@
  *
  * FUNCTION:    RsDoFixedDmaDescriptor
  *
- * PARAMETERS:  Op                  - Parent resource descriptor parse node
- *              CurrentByteOffset   - Offset into the resource template AML
- *                                    buffer (to track references to the desc)
+ * PARAMETERS:  Info                - Parse Op and resource template offset
  *
  * RETURN:      Completed resource node
  *
@@ -196,16 +192,17 @@
 
 ASL_RESOURCE_NODE *
 RsDoFixedDmaDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset)
+    ASL_RESOURCE_INFO       *Info)
 {
     AML_RESOURCE            *Descriptor;
     ACPI_PARSE_OBJECT       *InitializerOp;
     ASL_RESOURCE_NODE       *Rnode;
+    UINT32                  CurrentByteOffset;
     UINT32                  i;
 
 
-    InitializerOp = Op->Asl.Child;
+    InitializerOp = Info->DescriptorTypeOp->Asl.Child;
+    CurrentByteOffset = Info->CurrentByteOffset;
     Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_FIXED_DMA));
 
     Descriptor = Rnode->Buffer;
@@ -241,7 +238,7 @@
 
         case 3: /* Descriptor Name (optional) */
 
-            UtAttachNamepathToOwner (Op, InitializerOp);
+            UtAttachNamepathToOwner (Info->DescriptorTypeOp, InitializerOp);
             break;
 
         default:    /* Ignore any extra nodes */
@@ -260,9 +257,7 @@
  *
  * FUNCTION:    RsDoFixedIoDescriptor
  *
- * PARAMETERS:  Op                  - Parent resource descriptor parse node
- *              CurrentByteOffset   - Offset into the resource template AML
- *                                    buffer (to track references to the desc)
+ * PARAMETERS:  Info                - Parse Op and resource template offset
  *
  * RETURN:      Completed resource node
  *
@@ -272,17 +267,18 @@
 
 ASL_RESOURCE_NODE *
 RsDoFixedIoDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset)
+    ASL_RESOURCE_INFO       *Info)
 {
     AML_RESOURCE            *Descriptor;
     ACPI_PARSE_OBJECT       *InitializerOp;
     ACPI_PARSE_OBJECT       *AddressOp = NULL;
     ASL_RESOURCE_NODE       *Rnode;
+    UINT32                  CurrentByteOffset;
     UINT32                  i;
 
 
-    InitializerOp = Op->Asl.Child;
+    InitializerOp = Info->DescriptorTypeOp->Asl.Child;
+    CurrentByteOffset = Info->CurrentByteOffset;
     Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_FIXED_IO));
 
     Descriptor = Rnode->Buffer;
@@ -314,7 +310,7 @@
 
         case 2: /* Name */
 
-            UtAttachNamepathToOwner (Op, InitializerOp);
+            UtAttachNamepathToOwner (Info->DescriptorTypeOp, InitializerOp);
             break;
 
         default:
@@ -341,9 +337,7 @@
  *
  * FUNCTION:    RsDoIoDescriptor
  *
- * PARAMETERS:  Op                  - Parent resource descriptor parse node
- *              CurrentByteOffset   - Offset into the resource template AML
- *                                    buffer (to track references to the desc)
+ * PARAMETERS:  Info                - Parse Op and resource template offset
  *
  * RETURN:      Completed resource node
  *
@@ -353,8 +347,7 @@
 
 ASL_RESOURCE_NODE *
 RsDoIoDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset)
+    ASL_RESOURCE_INFO       *Info)
 {
     AML_RESOURCE            *Descriptor;
     ACPI_PARSE_OBJECT       *InitializerOp;
@@ -363,10 +356,12 @@
     ACPI_PARSE_OBJECT       *LengthOp = NULL;
     ACPI_PARSE_OBJECT       *AlignOp = NULL;
     ASL_RESOURCE_NODE       *Rnode;
+    UINT32                  CurrentByteOffset;
     UINT32                  i;
 
 
-    InitializerOp = Op->Asl.Child;
+    InitializerOp = Info->DescriptorTypeOp->Asl.Child;
+    CurrentByteOffset = Info->CurrentByteOffset;
     Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_IO));
 
     Descriptor = Rnode->Buffer;
@@ -424,7 +419,7 @@
 
         case 5: /* Name */
 
-            UtAttachNamepathToOwner (Op, InitializerOp);
+            UtAttachNamepathToOwner (Info->DescriptorTypeOp, InitializerOp);
             break;
 
         default:
@@ -443,7 +438,7 @@
         Descriptor->Io.Maximum,
         Descriptor->Io.AddressLength,
         Descriptor->Io.Alignment,
-        MinOp, MaxOp, LengthOp, AlignOp, Op);
+        MinOp, MaxOp, LengthOp, AlignOp, Info->DescriptorTypeOp);
 
     return (Rnode);
 }
@@ -453,9 +448,7 @@
  *
  * FUNCTION:    RsDoIrqDescriptor
  *
- * PARAMETERS:  Op                  - Parent resource descriptor parse node
- *              CurrentByteOffset   - Offset into the resource template AML
- *                                    buffer (to track references to the desc)
+ * PARAMETERS:  Info                - Parse Op and resource template offset
  *
  * RETURN:      Completed resource node
  *
@@ -465,18 +458,19 @@
 
 ASL_RESOURCE_NODE *
 RsDoIrqDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset)
+    ASL_RESOURCE_INFO       *Info)
 {
     AML_RESOURCE            *Descriptor;
     ACPI_PARSE_OBJECT       *InitializerOp;
     ASL_RESOURCE_NODE       *Rnode;
     UINT32                  Interrupts = 0;
     UINT16                  IrqMask = 0;
+    UINT32                  CurrentByteOffset;
     UINT32                  i;
 
 
-    InitializerOp = Op->Asl.Child;
+    InitializerOp = Info->DescriptorTypeOp->Asl.Child;
+    CurrentByteOffset = Info->CurrentByteOffset;
     Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_IRQ));
 
     /* Length = 3 (with flag byte) */
@@ -514,7 +508,7 @@
 
         case 3: /* Name */
 
-            UtAttachNamepathToOwner (Op, InitializerOp);
+            UtAttachNamepathToOwner (Info->DescriptorTypeOp, InitializerOp);
             break;
 
         default:
@@ -576,9 +570,7 @@
  *
  * FUNCTION:    RsDoIrqNoFlagsDescriptor
  *
- * PARAMETERS:  Op                  - Parent resource descriptor parse node
- *              CurrentByteOffset   - Offset into the resource template AML
- *                                    buffer (to track references to the desc)
+ * PARAMETERS:  Info                - Parse Op and resource template offset
  *
  * RETURN:      Completed resource node
  *
@@ -588,18 +580,19 @@
 
 ASL_RESOURCE_NODE *
 RsDoIrqNoFlagsDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset)
+    ASL_RESOURCE_INFO       *Info)
 {
     AML_RESOURCE            *Descriptor;
     ACPI_PARSE_OBJECT       *InitializerOp;
     ASL_RESOURCE_NODE       *Rnode;
     UINT16                  IrqMask = 0;
     UINT32                  Interrupts = 0;
+    UINT32                  CurrentByteOffset;
     UINT32                  i;
 
 
-    InitializerOp = Op->Asl.Child;
+    InitializerOp = Info->DescriptorTypeOp->Asl.Child;
+    CurrentByteOffset = Info->CurrentByteOffset;
     Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_IRQ_NOFLAGS));
 
     Descriptor = Rnode->Buffer;
@@ -614,7 +607,7 @@
         {
         case 0: /* Name */
 
-            UtAttachNamepathToOwner (Op, InitializerOp);
+            UtAttachNamepathToOwner (Info->DescriptorTypeOp, InitializerOp);
             break;
 
         default:
--- a/sys/external/bsd/acpica/dist/compiler/aslrestype2.c	Sat Oct 25 19:08:48 2014 +0000
+++ b/sys/external/bsd/acpica/dist/compiler/aslrestype2.c	Sat Oct 25 20:57:55 2014 +0000
@@ -5,7 +5,7 @@
  *****************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2013, Intel Corp.
+ * Copyright (C) 2000 - 2014, Intel Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,7 +41,6 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-
 #include "aslcompiler.h"
 #include "aslcompiler.y.h"
 #include "amlcode.h"
@@ -61,9 +60,7 @@
  *
  * FUNCTION:    RsDoGeneralRegisterDescriptor
  *
- * PARAMETERS:  Op                  - Parent resource descriptor parse node
- *              CurrentByteOffset   - Offset into the resource template AML
- *                                    buffer (to track references to the desc)
+ * PARAMETERS:  Info                - Parse Op and resource template offset
  *
  * RETURN:      Completed resource node
  *
@@ -73,16 +70,17 @@
 
 ASL_RESOURCE_NODE *
 RsDoGeneralRegisterDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset)
+    ASL_RESOURCE_INFO       *Info)
 {
     AML_RESOURCE            *Descriptor;
     ACPI_PARSE_OBJECT       *InitializerOp;
     ASL_RESOURCE_NODE       *Rnode;
+    UINT32                  CurrentByteOffset;
     UINT32                  i;
 
 
-    InitializerOp = Op->Asl.Child;
+    InitializerOp = Info->DescriptorTypeOp->Asl.Child;
+    CurrentByteOffset = Info->CurrentByteOffset;
     Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_GENERIC_REGISTER));
 
     Descriptor = Rnode->Buffer;
@@ -138,7 +136,7 @@
 
         case 5: /* ResourceTag (ACPI 3.0b) */
 
-            UtAttachNamepathToOwner (Op, InitializerOp);
+            UtAttachNamepathToOwner (Info->DescriptorTypeOp, InitializerOp);
             break;
 
         default:
@@ -157,9 +155,7 @@
  *
  * FUNCTION:    RsDoInterruptDescriptor
  *
- * PARAMETERS:  Op                  - Parent resource descriptor parse node
- *              CurrentByteOffset   - Offset into the resource template AML
- *                                    buffer (to track references to the desc)
+ * PARAMETERS:  Info                - Parse Op and resource template offset
  *
  * RETURN:      Completed resource node
  *
@@ -169,8 +165,7 @@
 
 ASL_RESOURCE_NODE *
 RsDoInterruptDescriptor (
-    ACPI_PARSE_OBJECT