Version 20121114

1) ACPICA Kernel-resident Subsystem:

Implemented a performance enhancement for ACPI/AML Package objects. This change greatly increases the performance of Package objects within the interpreter. It changes the processing of reference counts for packages by optimizing for the most common case where the package sub-objects are either Integers, Strings, or Buffers. Increases the overall performance of the ASLTS test suite by 1.5X (Increases the Slack Mode performance by 2X.) Chao Guan. ACPICA BZ 943.

Implemented and deployed common macros to extract flag bits from resource descriptors. Improves readability and maintainability of the code. Fixes a problem with the UART serial bus descriptor for the number of data bits flags (was incorrectly 2 bits, should be 3).

Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation of the macros and changed the SETx macros to the style of (destination, source). Also added ACPI_CASTx companion macros. 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.

Previous Release:
Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total
Debug Version: 175.5K Code, 74.5K Data, 250.0K Total
Current Release:
Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total
Debug Version: 175.5K Code, 74.5K Data, 250.0K Total

2) iASL Compiler/Disassembler and Tools:

Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change adds the ShareAndWake and ExclusiveAndWake flags which were added to the Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.

Disassembler: Fixed a problem with external declaration generation. Fixes a problem where an incorrect pathname could be generated for an external declaration if the original reference to the object includes leading carats (^). ACPICA BZ 984.

Debugger: Completed a major update for the Disassemble command. This command was out-of-date and did not properly disassemble control methods that had any reasonable complexity. This fix brings the command up to the same level as the rest of the disassembler. Adds one new file, dmdeferred.c, which is existing code that is now common with the main disassembler and the debugger disassemble command. ACPICA MZ 978.

iASL: Moved the parser entry prototype to avoid a duplicate declaration. Newer versions of Bison emit this prototype, so moved the prototype out of the iASL header to where it is actually used in order to avoid a duplicate declaration.

iASL/Tools: Standardized use of the stream I/O functions:

  1. Ensure check for I/O error after every fopen/fread/fwrite
  2. Ensure proper order of size/count arguments for fread/fwrite
  3. Use test of (Actual != Requested) after all fwrite, and most fread
  4. Standardize I/O error messages

Improves reliability and maintainability of the code. Bob Moore, Lv Zheng. ACPICA BZ 981.

Disassembler: Prevent duplicate External() statements. During generation of external statements, detect similar pathnames that are actually duplicates such as these:
External (\ABCD)
External (ABCD)
Remove all leading '\' characters from pathnames during the external statement generation so that duplicates will be detected and tossed. ACPICA BZ 985.

Tools: Replace low-level I/O with stream I/O functions. Replace open/read/write/close with the stream I/O equivalents fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob Moore.

AcpiBin: Fix for the dump-to-hex function. Now correctly output the table name header so that AcpiXtract recognizes the output file/table.

iASL: Remove obsolete -2 option flag. Originally intended to force the compiler/disassembler into an ACPI 2.0 mode, this was never implemented and the entire concept is now obsolete.

Date: 
14 November, 2012