Jump to content

About This File

acpica.png

UPDATED BUILD ! The last commit.

Intel ACPI tools. The NEW version 20150619 compiled by me from original sources. Use iasl compiler with your DSDTSE or another editor. To update your DSDTSE, simply right click on DSDTSE --> Show contents, drag'n'drop iasl into --> Contents --> Resources. Another editors have mostly the same way. Or another way by Terminal: drag iasl on Terminal window (bash), (press Return (Enter) to see all keys) -> write some keys, drag Aml/Dsl file to compile/decompile. This way you can more deeply configure/clean your DSDT during compile (especially with -w3 key), find more warnings and junk code, empty / uninitialized methods. Have a nice day good compilings! For MaciASL simply drag iasl to Contents --> MacOS and rename it to iasl5 (or iasl51 for MaciASL 1.3 b262+ builds)

Intel ACPI тулзы вер?ии 20150619 ?компилированы мною из оригинальных ?ырцов. Дл? и?пользовани? ? ДСДТ редактором. Ин?талим ?юда: Открываем правой кнопкой по "любимому" редактору --> показать ?одержимое пакета --> Contents --> Resources --> перета?киваем драг-н-дропом на ?ту папку файл iasl, на замену ?оглашаем??. Имеем ?вежий компайлер. Дл? MaciASL перета?киваем в подпапку Contents --> MacOS и даем ему им? iasl5 (или iasl51 дл? ?овременных билдов MaciASL 1.3 b262+ )

Major tools and utilities:

  • iASL - ACPI Source Language Compiler, ACPI Table Compiler, and AML Disassembler
  • AcpiExec - Load ACPI tables and execute control methods from user space
  • AcpiDump - Obtain system ACPI tables and save in ASCII hex format
  • AcpiXtract - Extract binary ACPI tables from an ASCII acpidump
  • AcpiHelp - Help utility for ASL operators, AML opcodes, and ACPI Predefined Names

Miscellaneous utilities:

  • AcpiNames - Example utility that loads and displays the ACPI namespace
  • AcpiSrc - Convert ACPICA code to Linux format
  • AcpiBin - Miscellaneous manipulation of binary ACPI tables

iASL HELP:

Intel ACPI Component Architecture

ASL+ Optimizing Compiler version 20150619-64

Copyright ? 2000 - 2015 Intel Corporation

Supports ACPI Specification Revision 6.0

Usage: iasl [Options] [Files]

Options:

General:

-@ <file> Specify command file

-I <dir> Specify additional include directory

-T <sig>|ALL|* Create table template file for ACPI <Sig>

-p <prefix> Specify path/filename prefix for all output files

-v Display compiler version

-vo Enable optimization comments

-vs Disable signon

Help:

-h This message

-hc Display operators allowed in constant expressions

-hf Display help for output filename generation

-hr Display ACPI reserved method names

-ht Display currently supported ACPI table names

Preprocessor:

-D <symbol> Define symbol for preprocessor use

-li Create preprocessed output file (*.i)

-P Preprocess only and create preprocessor output file (*.i)

-Pn Disable preprocessor

Errors, Warnings, and Remarks:

-va Disable all errors/warnings/remarks

-ve Report only errors (ignore warnings and remarks)

-vi Less verbose errors and warnings for use with IDEs

-vr Disable remarks

-vw <messageid> Disable specific warning or remark

-w1 -w2 -w3 Set warning reporting level

-we Report warnings as errors

AML Code Generation (*.aml):

-oa Disable all optimizations (compatibility mode)

-of Disable constant folding

-oi Disable integer optimization to Zero/One/Ones

-on Disable named reference string optimization

-cr Disable Resource Descriptor error checking

-in Ignore NoOp operators

-r <revision> Override table header Revision (1-255)

Optional Source Code Output Files:

-sc -sa Create source file in C or assembler (*.c or *.asm)

-ic -ia Create include file in C or assembler (*.h or *.inc)

-tc -ta -ts Create hex AML table in C, assembler, or ASL (*.hex)

-so Create offset table in C (*.offset.h)

Optional Listing Files:

-l Create mixed listing file (ASL source and AML) (*.lst)

-lm Create hardware summary map file (*.map)

-ln Create namespace file (*.nsp)

-ls Create combined source file (expanded includes) (*.src)

Data Table Compiler:

-G Compile custom table that contains generic operators

-vt Create verbose template files (full disassembly)

AML Disassembler:

-d <f1 f2 ...> Disassemble or decode binary ACPI tables to file (*.dsl)

(Optional, file type is automatically detected)

-da <f1 f2 ...> Disassemble multiple tables from single namespace

-db Do not translate Buffers to Resource Templates

-dc <f1 f2 ...> Disassemble AML and immediately compile it

(Obtain DSDT from current system if no input file)

-df Force disassembler to assume table contains valid AML

-dl Emit legacy ASL code only (no C-style operators)

-e <f1 f2 ...> Include ACPI table(s) for external symbol resolution

-fe <file> Specify external symbol declaration file

-in Ignore NoOp opcodes

-vt Dump binary table data in hex format within output file

Debug Options:

-bf Create debug file (full output) (*.txt)

-bs Create debug file (parse tree only) (*.txt)

-bp <depth> Prune ASL parse tree

-bt <type> Object type to be pruned from the parse tree

-f Ignore errors, force creation of AML output file(s)

-m <size> Set internal line buffer size (in Kbytes)

-n Parse only, no output generation

-ot Display compile times and statistics

-x <level> Set debug level for trace output

-z Do not insert new compiler ID for DataTables

ACPISpec ver. 6.0 / ACPI Спецификации 6.0

ACPI Spec ver. 5.1 / ACPI ?пецификации вер?ии 5.1

ACPISPec ver. 5.1 Errata A / ACPI ?пецификации 5.1 И?правлени? ?

Attension / Внимание ::

===========================

Simple replacement of iasl compiler (iasl --> iasl5) in MacIASL leads to an empty Summary window, the bottom line shows correctly number of the errors / warnings / remarks, but the screen remains blank and errors addresses hard to find. This is the MacIASL's bug, not the compiler's.

Про?та? замена компайлера iasl (iasl --> iasl5) в MacIASL ведет к пу?тому выхлопу окна Summary, то е?ть количе?тво ошибок / предупреждений / ремарок в нижней ?троке показывает корректно, но окно о?тает?? пу?тым и адре?а ошибок найти ?ложно. Это баг ?амого MacIASL, а не компил?тора.

===========================

IMPORTANT / В?Ж?О :

===========================

To have a correctly disassembled DSL file w/o unexpected errors, you need to use the Terminal to decompile AML binaries. If you have a modern platform and more than 1 SSDT in your ACPI, you need to decompile all of them correctly. To decompile only DSDT.aml use -e key (to decompile in legacy ASL code mode you have to add -dl key instead of -d ) :

Чтобы получить корректно диза??емблированный DSL файл без непредвиденных ошибок декомпил?ции, нужно и?пользовать терминал дл? декомпил?ции бинарников. Е?ли вы владеете ?овременной платформой и ?реди ACPI таблиц при?ут?твует более 1 SSDT, необходимо их корректно декомпилировать. Чтобы декомпилировать только DSDT, и?пользуйте ключ -e: (дл? ра?паковки в лега?и код ASL вме?то ключа -d надо и?пользовать новый ключ -dl ) :

===========================

New ASL+ decompile: / Декомпайл ASL+:

iasl -e SSDT*.aml -d DSDT.aml

iasl -e /@full_path@/SSDT*.aml -d /@full_path@/DSDT.aml

iasl -da /@full_path@/SSDT*.aml /@full_path@/DSDT.aml

Legacy ASL decompile / Декомпайл ASL лега?и:

iasl -e SSDT*.aml -dl DSDT.aml

iasl -e /@full_path@/SSDT*.aml -dl /@full_path@/DSDT.aml

iasl -da -dl /@full_path@/SSDT*.aml /@full_path@/DSDT.aml

===============================

To decompile all DSDT & SSDTs use -da key / Чтобы декомпилировать в?е DSDT и SSDT таблицы, и?пользуйте ключ -da:

iasl -da DSDT.aml SSDT*.aml

iasl -da /@full_path@/DSDT.aml /@full_path@/SSDT*.aml

Also add reference file ref.txt with unresolved External Methods and Argument count for each. Use -fe key:

Также можно добавить дополнительный реф.файл ref.txt c перечи?лением в?е еще нера?познанных методов и количе?тво ?ргументов дл? каждого. И?пользуйте ключ -fe:

===============================

External (MDBG, MethodObj, 1) // <<<--- Unresolved Method with designated Arguments count (text file ref.txt)

iasl -fe /@full_path@/ref.txt -e /@full_path@/SSDT*.aml -d /@full_path@/DSDT.aml

iasl -fe /@full_path@/ref.txt -e /@full_path@/SSDT*.aml -dl /@full_path@/DSDT.aml

iasl -fe /@full_path@/ref.txt -da -dl /@full_path@/SSDT*.aml /@full_path@/DSDT.aml

===============================

The command in the Terminal should be like this (with full paths of the files):

Команда в Терминале будет выгл?деть так (? полными пут?ми к файлам):

0:~ steve$ /Volumes/2\ UNIT\ 2T/MAC\ OS\ X\ \&\ HACK/ACPI/iASL_MAC/acpica-unix-20150619/iasl_20150619_64/iasl -fe /Volumes/Y/Users/stevebondaryan/Desktop/N551JM/origin/ref.txt -e /Volumes/Y/Users/stevebondaryan/Desktop/N551JM/origin/SSDT*.aml -dl /Volumes/Y/Users/stevebondaryan/Desktop/N551JM/origin/DSDT.aml

After pressing the Return key you should see something like this. It means that all of SSDTs were attached correctly to parsing (but in this example there were not all Externals resolved).

По?ле нажати? клавиши Return вы увидите что-то наподобие ?того. Это означает, что в?е ССДТ таблицы были прикреплены к пар?ингу (но в ?том примере не были ра?познаны в?е External методы).

Intel ACPI Component ArchitectureASL+ Optimizing Compiler version 20150619-64Copyright (c) 2000 - 2015 Intel CorporationReading ACPI table from file /Volumes/Y/Users/stevebondaryan/Desktop/N551JM/origin/DSDT.aml - Length 00081138 (0x013CF2)ACPI: DSDT 0x0000000000000000 013CF2 (v02 _ASUS_ Notebook 00000012 INTL 20120711)Acpi table [DSDT] successfully installed and loadedReading ACPI table from file /Volumes/Y/Users/stevebondaryan/Desktop/N551JM/origin/SSDT-9.aml - Length 00006602 (0x0019CA)ACPI: SSDT 0x0000000000000000 0019CA (v01 OptRef OptTabl  00001000 INTL 20120711)Acpi table [SSDT] successfully installed and loadedPass 1 parse of [SSDT]Pass 2 parse of [SSDT]Reading ACPI table from file /Volumes/Y/Users/stevebondaryan/Desktop/N551JM/origin/SSDT-8.aml - Length 00006531 (0x001983)ACPI: SSDT 0x0000000000000000 001983 (v01 SgRef  SgPeg    00001000 INTL 20120711)Acpi table [SSDT] successfully installed and loadedPass 1 parse of [SSDT]Pass 2 parse of [SSDT]Reading ACPI table from file /Volumes/Y/Users/stevebondaryan/Desktop/N551JM/origin/SSDT-7.aml - Length 00017729 (0x004541)ACPI: SSDT 0x0000000000000000 004541 (v01 SaSsdt SaSsdt   00003000 INTL 20091112)Acpi table [SSDT] successfully installed and loadedPass 1 parse of [SSDT]Pass 2 parse of [SSDT]Reading ACPI table from file /Volumes/Y/Users/stevebondaryan/Desktop/N551JM/origin/SSDT-6.aml - Length 00000664 (0x000298)ACPI: SSDT 0x0000000000000000 000298 (v01 SataRe SataTabl 00001000 INTL 20120711)Acpi table [SSDT] successfully installed and loadedPass 1 parse of [SSDT]Pass 2 parse of [SSDT]Reading ACPI table from file /Volumes/Y/Users/stevebondaryan/Desktop/N551JM/origin/SSDT-5x.aml - Length 00000281 (0x000119)ACPI: SSDT 0x0000000000000000 000119 (v01 PmRef  ApCst    00003000 INTL 20120711)Acpi table [SSDT] successfully installed and loadedPass 1 parse of [SSDT]Pass 2 parse of [SSDT]Reading ACPI table from file /Volumes/Y/Users/stevebondaryan/Desktop/N551JM/origin/SSDT-4x.aml - Length 00000979 (0x0003D3)ACPI: SSDT 0x0000000000000000 0003D3 (v01 PmRef  Cpu0Cst  00003001 INTL 20120711)Acpi table [SSDT] successfully installed and loadedPass 1 parse of [SSDT]Pass 2 parse of [SSDT]Reading ACPI table from file /Volumes/Y/Users/stevebondaryan/Desktop/N551JM/origin/SSDT-3x.aml - Length 00001450 (0x0005AA)ACPI: SSDT 0x0000000000000000 0005AA (v01 PmRef  ApIst    00003000 INTL 20120711)Acpi table [SSDT] successfully installed and loadedPass 1 parse of [SSDT]Pass 2 parse of [SSDT]Reading ACPI table from file /Volumes/Y/Users/stevebondaryan/Desktop/N551JM/origin/SSDT-2.aml - Length 00002776 (0x000AD8)ACPI: SSDT 0x0000000000000000 000AD8 (v01 PmRef  CpuPm    00003000 INTL 20120711)Acpi table [SSDT] successfully installed and loadedPass 1 parse of [SSDT]Pass 2 parse of [SSDT]Reading ACPI table from file /Volumes/Y/Users/stevebondaryan/Desktop/N551JM/origin/SSDT-1.aml - Length 00001337 (0x000539)ACPI: SSDT 0x0000000000000000 000539 (v01 PmRef  Cpu0Ist  00003000 INTL 20120711)Acpi table [SSDT] successfully installed and loadedPass 1 parse of [SSDT]Pass 2 parse of [SSDT]Reading ACPI table from file /Volumes/Y/Users/stevebondaryan/Desktop/N551JM/origin/SSDT-0.aml - Length 00000413 (0x00019D)ACPI: SSDT 0x0000000000000000 00019D (v01 Intel  zpodd    00001000 INTL 20120711)Acpi table [SSDT] successfully installed and loadedPass 1 parse of [SSDT]Pass 2 parse of [SSDT]/Volumes/Y/Users/stevebondaryan/Desktop/N551JM/origin/ref.txt: Importing method external (1 arguments) MDBG/Volumes/Y/Users/stevebondaryan/Desktop/N551JM/origin/ref.txt: Importing method external (4 arguments) _SB_.PCI0.GFX0._DSM/Volumes/Y/Users/stevebondaryan/Desktop/N551JM/origin/ref.txt: Imported 2 external method definitionsPass 1 parse of [DSDT]Pass 2 parse of [DSDT]Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions)Parsing completedFound 31 external control methods, reparsing with new informationPass 1 parse of [DSDT]Pass 2 parse of [DSDT]Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions)Parsing completedDisassembly completedASL Output:    /Volumes/Y/Users/stevebondaryan/Desktop/N551JM/origin/DSDT.dsl - 748426 bytesiASL Warning: There were 31 external control methods found duringdisassembly, but only 25 were resolved (6 unresolved). AdditionalACPI tables may be required to properly disassemble the code. Theresulting disassembler output file may not compile because thedisassembler did not know how many arguments to assign to theunresolved methods. Note: SSDTs can be dynamically loaded atruntime and may or may not be available via the host OS.If necessary, the -fe option can be used to specify a file containingcontrol method external declarations with the associated methodargument counts. Each line of the file must be of the form:    External (<method pathname>, MethodObj, <argument count>)Invocation:    iasl -fe refs.txt -d dsdt.aml

Here is an example how disassembler parses the Externals.

Вот пример, как диза??емблер пар?ит External методы.

    External (_SB_.PCI0.PAUD.PUAM, MethodObj)    // Warning: Unresolved method, guessing 0 arguments    External (_SB_.PCI0.RP05.PEGP.EPON, MethodObj)    // Warning: Unresolved method, guessing 0 arguments    External (_SB_.PCI0.XHC_.DUAM, MethodObj)    // Warning: Unresolved method, guessing 0 arguments    External (_SB_.TPM_.PTS_, MethodObj)    // Warning: Unresolved method, guessing 1 arguments    External (PS0X, MethodObj)    // Warning: Unresolved method, guessing 0 arguments    External (PS3X, MethodObj)    // Warning: Unresolved method, guessing 0 arguments    /*     * External declarations that were imported from     * the reference file [/Volumes/Y/Users/stevebondaryan/Desktop/N551JM/origin/ref.txt]     */    External (_SB_.PCI0.GFX0._DSM, MethodObj)    // 4 Arguments    External (MDBG, MethodObj)    // 1 Arguments    External (_PR_.CPU0._PPC, IntObj)    External (_PR_.CPU0._PSS, PkgObj)    External (_SB_.IAOE.ECTM, UnknownObj)    External (_SB_.IAOE.FFSE, UnknownObj)    External (_SB_.IAOE.IBT1, UnknownObj)    External (_SB_.IAOE.ITMR, UnknownObj)    External (_SB_.IAOE.PTSL, UnknownObj)    External (_SB_.IAOE.RCTM, UnknownObj)    External (_SB_.IAOE.WKRS, UnknownObj)    External (_SB_.IFFS.FFSS, UnknownObj)    External (_SB_.PCCD, UnknownObj)    External (_SB_.PCCD.PENB, UnknownObj)    External (_SB_.PCI0.B0D3.ABAR, FieldUnitObj)    External (_SB_.PCI0.B0D3.BARA, IntObj)    External (_SB_.PCI0.GFX0.ADVD, MethodObj)    // 0 Arguments    External (_SB_.PCI0.GFX0.AINT, MethodObj)    // 2 Arguments    External (_SB_.PCI0.GFX0.CBLV, FieldUnitObj)    External (_SB_.PCI0.GFX0.CLID, FieldUnitObj)    External (_SB_.PCI0.GFX0.DWBL, MethodObj)    // 0 Arguments    External (_SB_.PCI0.GFX0.GCBL, MethodObj)    // 1 Arguments    External (_SB_.PCI0.GFX0.GCDS, MethodObj)    // 0 Arguments    External (_SB_.PCI0.GFX0.GLID, MethodObj)    // 1 Arguments    External (_SB_.PCI0.GFX0.GSCI, MethodObj)    // 0 Arguments    External (_SB_.PCI0.GFX0.GSSE, FieldUnitObj)    External (_SB_.PCI0.GFX0.LCDD._DCS, MethodObj)    // 0 Arguments    External (_SB_.PCI0.GFX0.NATK, MethodObj)    // 0 Arguments    External (_SB_.PCI0.GFX0.OPTS, MethodObj)    // 1 Arguments    External (_SB_.PCI0.GFX0.OWAK, MethodObj)    // 1 Arguments    External (_SB_.PCI0.GFX0.PRST, MethodObj)    // 0 Arguments    External (_SB_.PCI0.GFX0.STAT, FieldUnitObj)    External (_SB_.PCI0.GFX0.SWHD, MethodObj)    // 1 Arguments    External (_SB_.PCI0.GFX0.TCHE, FieldUnitObj)    External (_SB_.PCI0.GFX0.UPBL, MethodObj)    // 0 Arguments    External (_SB_.PCI0.PEG0, UnknownObj)    External (_SB_.PCI0.PEG0.HPME, MethodObj)    // 0 Arguments    External (_SB_.PCI0.PEG0.PEGP, UnknownObj)    External (_SB_.PCI0.PEG0.PEGP.DWBL, MethodObj)    // 0 Arguments    External (_SB_.PCI0.PEG0.PEGP.EPON, MethodObj)    // 0 Arguments    External (_SB_.PCI0.PEG0.PEGP.LCDD._DCS, MethodObj)    // 0 Arguments    External (_SB_.PCI0.PEG0.PEGP.NATK, MethodObj)    // 0 Arguments    External (_SB_.PCI0.PEG0.PEGP.PRST, MethodObj)    // 0 Arguments    External (_SB_.PCI0.PEG0.PEGP.UPBL, MethodObj)    // 0 Arguments    External (_SB_.PCI0.PEG1, UnknownObj)    External (_SB_.PCI0.PEG1.HPME, MethodObj)    // 0 Arguments    External (_SB_.PCI0.PEG2, UnknownObj)    External (_SB_.PCI0.PEG2.HPME, MethodObj)    // 0 Arguments    External (GSMI, FieldUnitObj)    External (LIDS, FieldUnitObj)    External (PCCD, UnknownObj)    External (PDC0, IntObj)    External (PDC1, IntObj)    External (PDC2, IntObj)    External (PDC3, IntObj)    External (PDC4, IntObj)    External (PDC5, IntObj)    External (PDC6, IntObj)    External (PDC7, IntObj)    External (SGMD, FieldUnitObj)

And here you are a correctly disassembled Method ADBG, which refering to External Method MDBG with 1 Arg count

Вот пример корректно диза??емблированного метода ADBG, который ??ылает?? на External метод MDBG c 1 ?ргументом.

    Method (ADBG, 1, Serialized)    {        If (CondRefOf (MDBG))        {            MNIO (Arg0)            MNIO ("\n")            Return (MDBG (Arg0))  // MDBG is and External reference Method, but there is no such method in ACPI tables.        }        Return (Zero)    }

But without ref.txt parsing will be incorrect and compiler will return an error, like this:

?о без подключенного ref.txt файла пар?инг кода пройдет неправильно и компил?тор вернет ошибку компил?ции:

    External (MDBG, IntObj) // Here is an ERROR// ...    Method (ADBG, 1, Serialized)    {        If (CondRefOf (MDBG))        {            MNIO (Arg0)            MNIO ("\n")            Return (MDBG) // Here is an ERROR            Arg0          // Here is an ERROR        }        Return (Zero)    }

===================

And more: if you need to decompile your custom DSDT with your patches and if it still has many External Methods, you need to use all of the SSDTs this time too. If you deleted all of the Externals and those dependencies in the code, then no need to decompile with SSDTs and refs.

В дополнение: е?ли вы решили декомпилировать ?вою ка?томную DSDT ? примененными патчами и в таблице в?е еще имеют?? в большом количе?тве External методы, в ?том ?лучае также требует?? и?пользовать терминал и включить в декомпил?цию в?е SSDT таблицы. Е?ли вы удалили в?е External методы ?о в?еми зави?имо?т?ми в коде, тогда не требует?? и?пользовать при декомпил?ции SSDT таблицы и реф.файлы.

===================

Changelog 20150619:

19 June 2015. Summary of changes for version 20150619:

Two regressions in version 20150616 have been addressed:

  • Fixes some problems/issues with the C library macro removal (ACPI_STRLEN, etc.) This update changes ACPICA to only use the standard headers for functions, or the prototypes for the local versions of the C library functions. Across the source code, this required some additional casts for some Clib invocations for portability. Moved all local prototypes to a new file, acclib.h
  • Fixes several problems with recent changes to the handling of the FACS table that could cause some systems not to boot.

----------------------------------------

16 June 2015. Summary of changes for version 20150616:

1) ACPICA kernel-resident subsystem:

  • Across the entire ACPICA source code base, the various macros for the C library functions (such as ACPI_STRLEN, etc.) have been removed and replaced by the standard C library names (strlen, etc.) The original purpose for these macros is no longer applicable. This simplification reduces the number of macros used in the ACPICA source code significantly, improving readability and maintainability.
  • Implemented support for a new ACPI table, the OSDT. This table, the "override" SDT, can be loaded directly by the host OS at boot time. It enables the replacement of existing namespace objects that were installed via the DSDT and/or SSDTs. The primary purpose for this is to replace buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob Moore.
  • Added support for systems with (improperly) two FACS tables -- a "32-bit" table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit X field). This change will support both automatically. There continues to be systems found with this issue. This support requires a change to the AcpiSetFirmwareWakingVector interface. Also, a public global variable has been added to allow the host to select which FACS is desired (AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more details Lv Zheng.
  • Added a new feature to allow for systems that do not contain an FACS. Although this is already supported on hardware-reduced platforms, the feature has been extended for all platforms. The reasoning is that we do not want to abort the entire ACPICA initialization just because the system is seriously buggy and has no FACS.
  • Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were not correctly transcribed from the ACPI specification in ACPICA version 20150515.
  • Implemented support for the _CLS object in the AcpiGetObjectInfo external interface.
  • Updated the definitions of the TCPA and TPM2 ACPI tables to the more recent TCG ACPI Specification, December 14, 2014. Table disassembler and compiler also updated. Note: The TCPA "server" table is not supported by the disassembler/table-compiler at this time.
  • ACPI 6.0: Added definitions for the new GIC version field in the MADT.
  • 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: 100.6K Code, 27.6K Data, 128.2K Total
  • Debug Version: 196.2K Code, 81.0K Data, 277.2K Total

Previous Release:

  • Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total
  • Debug Version: 195.2K Code, 80.8K Data, 276.0K Total

2) iASL Compiler/Disassembler and Tools:

  • Disassembler: Fixed a problem with the new symbolic operator disassembler where incorrect ASL code could be emitted in some cases for the "non-commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and ShiftRight. The actual problem cases seem to be rather unusual in common ASL code, however. David Box.
  • Modified the linux version of acpidump to obtain ACPI tables from not just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv Zheng.
  • iASL: Fixed a problem where the user preprocessor output file (.i) contained extra data that was not expected. The compiler was using this file as a temporary file and passed through #line directives in order to keep compiler error messages in sync with the input file and line number across multiple include files. The (.i) is no longer a temporary file as the compiler uses a new, different file for the original purpose.
  • iASL: Fixed a problem where comments within the original ASL source code file were not passed through to the preprocessor output file, nor any listing files.
  • iASL: Fixed some issues for the handling of the "#include" preprocessor directive and the similar (but not the same) "Include" ASL operator.
  • iASL: Add support for the new OSDT in both the disassembler and compiler.
  • iASL: Fixed a problem with the constant folding support where a Buffer object could be incorrectly generated (incorrectly formed) during a conversion to a Store() operator.
  • AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new description text for the _REV predefined name. _REV now permanently returns 2, as per the ACPI 6.0 specification.
  • Debugger: Enhanced the output of the Debug ASL object for references produced by the Index operator. For Buffers and strings, only output the actual byte pointed to by the index. For packages, only print the single package element decoded by the index. Previously, the entire buffer/string/package was emitted.
  • iASL/Table-compiler: Fixed a regression where the "generic" data types were no longer recognized, causing errors.

---------------------------------------------

08 April 2015. Summary of changes for version 20150515:

This release implements most of ACPI 6.0 as described below.

1) ACPICA kernel-resident subsystem:

  • Implemented runtime argument checking and return value checking for all new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI, _MTL, _PRR, _RDI, _RST, _TFP, _TSN.
  • 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.9K Code, 27.5K Data, 127.4K Total
  • Debug Version: 195.2K Code, 80.8K Data, 276.0K Total

Previous Release:

  • Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total
  • Debug Version: 192.8K Code, 79.9K Data, 272.7K Total

2) iASL Compiler/Disassembler and Tools:

  • iASL compiler: Added compile-time support for all new ACPI 6.0 predefined names (argument count validation and return value typechecking.)
  • iASL disassembler and table compiler: implemented support for all new ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV.
  • iASL disassembler and table compiler: Added ACPI 6.0 changes to existing tables: FADT, MADT.
  • iASL preprocessor: Added a new directive to enable inclusion of binary blobs into ASL code. The new directive is #includebinary. It takes a binary file as input and emits a named ascii buffer object into the ASL code.
  • AcpiHelp: Added support for all new ACPI 6.0 predefined names.
  • AcpiHelp: Added a new option, -d, to display all iASL preprocessor directives.
  • AcpiHelp: Added a new option, -t, to display all known/supported ACPI tables.

----------------------------------------

10 April 2015. Summary of changes for version 20150410:

  • Reverted a change introduced in version 20150408 that caused a regression in the disassembler where incorrect operator symbols could be emitted.

----------------------------------------

08 April 2015. Summary of changes for version 20150408:

1) ACPICA kernel-resident subsystem:

  • Permanently set the return value for the _REV predefined name. It now returns 2 (was 5). This matches other ACPI implementations. _REV will be deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2 for ACPI 2.0 and later. It should never be used to differentiate or identify operating systems.
  • Added the "Windows 2015" string to the _OSI support. ACPICA will now return TRUE to a query with this string.
  • Fixed several issues with the local version of the printf function.
  • Added the C99 compiler option (-std=c99) to the Unix makefiles.

Current Release:

  • Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total
  • Debug Version: 195.2K Code, 80.7K Data, 275.9K 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: Implemented an enhancement to the constant folding feature to transform the parse tree to a simple Store operation whenever possible:

Add (2, 3, X) ==> is converted to: Store (5, X)X = 2 + 3 ==> is converted to: Store (5, X)

  • Updated support for the SLIC table (Software Licensing Description Table) in both the Data Table compiler and the disassembler. The SLIC table support now conforms to "Microsoft Software Licensing Tables (SLIC and MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data following the ACPI header is now defined to be "Proprietary Data", and as such, can only be entered or displayed as a hex data block.
  • Implemented full support for the MSDM table as described in the document above. Note: The format of MSDM is similar to SLIC. Any MSDM data following the ACPI header is defined to be "Proprietary Data", and can only be entered or displayed as a hex data block.
  • Implemented the -Pn option for the iASL Table Compiler (was only implemented for the ASL compiler). This option disables the iASL preprocessor.
  • Disassembler: For disassembly of Data Tables, added a comment field around the Ascii equivalent data that is emitted as part of the "Raw Table Data" block. This prevents the iASL Preprocessor from possible confusion if/when the table is compiled.
  • Disassembler: Added an option (-df) to force the disassembler to assume that the table being disassembled contains valid AML. This feature is useful for disassembling AML files that contain ACPI signatures other than DSDT or SSDT (such as OEMx or other signatures).
  • Changes for the EFI version of the tools:

1) Fixed a build error/issue

2) Fixed a cast warning

  • iASL: Fixed a path issue with the __FILE__ operator by making the directory prefix optional within the internal SplitInputFilename function.
  • Debugger: Removed some unused global variables.
  • Tests: Updated the makefile for proper generation of the AAPITS suite.

----------------------------------------

04 February 2015. Summary of changes for version 20150204:

This release is available at https://acpica.org/downloads

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.
  • Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues. A raw gpe handling mechanism was created to allow better handling of GPE storms that aren't easily managed by the normal handler. The raw handler allows disabling/renabling of the the GPE so that interrupt storms can be avoided in cases where events cannot be timely serviced. In this scenario, handlers should use the AcpiSetGpe() API to disable/enable the GPE. This APIwill leave the reference counts undisturbed, thereby preventing unintentionalclearing of the GPE when the intent in only to temporarily disable it. Rawhandlers allow enabling and disabling of a GPE by removing GPE registerlocking. As such, raw handlers much provide their own locks while using GPE API's to protect access to GPE data structures. Lv Zheng
  • Events: Always modify GPE registers under the GPE lock. Applies GPE lock around AcpiFinishGpe() to protect access to GPE register values. Reported as bug by joe.liu@apple.com.
  • Unix makefiles: Separate option to disable optimizations and _FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the NOOPT disable option and creates a separate flag (NOFORTIFY) for this purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined errors when building ACPICA. This allows disabling the option without also having to disable optimazations. David Box

Current Release:

  • Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
  • Debug Version: 199.2K Code, 82.4K Data, 281.6K Total

-------------------------------------------------------------

07 November 2014. Summary of changes for version 20141107:

This release is available at https://acpica.org/downloads

  • This release introduces and implements language extensions to ASL that provide support for symbolic ("C-style") operators and expressions. These language extensions are known collectively as ASL+.

1) iASL Compiler/Disassembler and Tools:

  • Disassembler: Fixed a problem with disassembly of the UartSerialBus macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E. Box.
  • Disassembler: Fixed the Unicode macro support to add escape sequences. All non-printable ASCII values are emitted as escape sequences, as well as the standard escapes for quote and backslash. Ensures that the disassembled macro can be correctly recompiled.
  • iASL: Added Printf/Fprintf macros for formatted output. These macros are translated to existing AML Concatenate and Store operations. Printf writes to the ASL Debug object. Fprintf allows the specification of an ASL name as the target. Only a single format specifier is required, %o, since the AML interpreter dynamically converts objects to the required type. David E. Box.

(old) Store (Concatenate (Concatenate (Concatenate (Concatenate(Concatenate (Concatenate (Concatenate ("", Arg0),": Unexpected value for "), Arg1), ", "), Arg2)," at line "), Arg3), Debug)(new) Printf ("%o: Unexpected value for %o, %o at line %o",Arg0, Arg1, Arg2, Arg3)(old) Store (Concatenate (Concatenate (Concatenate (Concatenate("", Arg1), ": "), Arg0), " Successful"), STR1)(new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0)

  • iASL: Added debug options (-bp, -bt) to dynamically prune levels of the ASL parse tree before the AML code is generated. This allows blocks of ASL code to be removed in order to help locate and identify problem devices and/or code. David E. Box.
  • AcpiExec: Added support (-fi) for an optional namespace object initialization file. This file specifies initial values for namespace objects as necessary for debugging and testing different ASL code paths that may be taken as a result of BIOS options.

2) Overview of symbolic operator support for ASL (ASL+)

-------------------------------------------------------

  • As an extension to the ASL language, iASL implements support for symbolic (C-style) operators for math and logical expressions. This can greatly simplify ASL code as well as improve both readability and maintainability. These language extensions can exist concurrently with all legacy ASL code and expressions.
  • The symbolic extensions are 100% compatible with existing AML interpreters, since no new AML opcodes are created. To implement the extensions, the iASL compiler transforms the symbolic expressions into the legacy ASL/AML equivalents at compile time.
  • Full symbolic expressions are supported, along with the standard C precedence and associativity rules.
  • Full disassembler support for the symbolic expressions is provided, and creates an automatic migration path for existing ASL code to ASL+ code via the disassembly process. By default, the disassembler now emits ASL+ code with symbolic expressions. An option (-dl) is provided to force the disassembler to emit legacy ASL code if desired.

Below is the complete list of the currently supported symbolic operators with examples. See the iASL User Guide for additional information.

ASL+ Syntax Legacy ASL Equivalent

// Math operatorsZ = X + Y Add (X, Y, Z)Z = X - Y Subtract (X, Y, Z)Z = X * Y Multiply (X, Y, Z)Z = X / Y Divide (X, Y, , Z)Z = X % Y Mod (X, Y, Z)Z = X << Y ShiftLeft (X, Y, Z)Z = X >> Y ShiftRight (X, Y, Z)Z = X & Y And (X, Y, Z)Z = X | Y Or (X, Y, Z)Z = X ^ Y Xor (X, Y, Z)Z = ~X Not (X, Z)X++ Increment (X)X-- Decrement (X)// Logical operators(X == Y) LEqual (X, Y)(X != Y) LNotEqual (X, Y)(X < Y) LLess (X, Y)(X > Y) LGreater (X, Y)(X <= Y) LLessEqual (X, Y)(X >= Y) LGreaterEqual (X, Y)(X && Y) LAnd (X, Y)(X || Y) LOr (X, Y)(!X) LNot (X)// Assignment and compound assignment operationsX = Y Store (Y, X)X += Y Add (X, Y, X)X -= Y Subtract (X, Y, X)X *= Y Multiply (X, Y, X)X /= Y Divide (X, Y, , X)X %= Y Mod (X, Y, X)X <<= Y ShiftLeft (X, Y, X)X >>= Y ShiftRight (X, Y, X)X &= Y And (X, Y, X)X |= Y Or (X, Y, X)X ^= Y Xor (X, Y, X)

3) ASL+ Examples:

Legacy ASL:If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530,0x03FB),0x02E0), LEqual (And (R540, 0x03FB), 0x02E0)))){And (MEMB, 0xFFFFFFF0, SRMB)Store (MEMB, Local2)Store (PDBM, Local1)And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)Store (SRMB, MEMB)Or (PDBM, 0x02, PDBM)}ASL+ version:If (((R510 & 0x03FB) == 0x02E0) ||((R520 & 0x03FB) == 0x02E0) ||((R530 & 0x03FB) == 0x02E0) ||((R540 & 0x03FB) == 0x02E0)){SRMB = (MEMB & 0xFFFFFFF0)Local2 = MEMBLocal1 = PDBMPDBM &= 0xFFFFFFFFFFFFFFF9MEMB = SRMBPDBM |= 0x02}Legacy ASL:Store (0x1234, Local1)Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3)Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3)Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3)Store (Index (PKG1, 0x03), Local6)Store (Add (Local3, Local2), Debug)Add (Local1, 0x0F, Local2)Add (Local1, Multiply (Local2, Local3), Local2)Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3)ASL+ version:Local1 = 0x1234Local3 = (((Local1 + TEST) + 0x20) * Local2)Local3 = (Local2 * ((Local1 + TEST) + 0x20))Local3 = (Local1 + (TEST + (0x20 * Local2)))Local6 = Index (PKG1, 0x03)Debug = (Local3 + Local2)Local2 = (Local1 + 0x0F)Local2 = (Local1 + (Local2 * Local3))Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1))


What's New in Version 20150619

Released

  • https://github.com/acpica/acpica/blob/master/documents/changes.txt



User Feedback

Recommended Comments

I've searched the web and I didn't find Maciasl 1.3 v262.. Did you mean 252? Also,when I copy your iasl as iasl51 in Maciasl/Contents/MacOS, when I check ASL+ Compiler Version it says it's from November 7 2014.. Should I delete iasl5?

Share this comment


Link to comment
Share on other sites

angelol?It is now 264 build here. But it still has an empty Summary window bug. PHPDEV32 answered me, that I can kick off this bug by inserting the patch to ACPICA's /generate/unix/ folder (asloptions.c file, line?Gbl_Files[ASL_FILE_STDERR].Handle = stdout;)

sed -i '' '/Gbl_Files\[ASL_FILE_STDERR\].Handle = stdout/d' ../../source/compiler/asloptions.c?

but still no luck. In this version I added this line. His version is workig fine BTW, but it is outdated. It is needed to make the file executable: in Terminal?

sudo chmod a+x <file>

Only for 262+ builds iasl should be iasl51 (btw, there are 3 versions: iasl4 + iasl5 + iasl51). For my version 252 here it should be iasl5.

xOKTJTi.png

Share this comment


Link to comment
Share on other sites

Has anybody encountered any problems with this version?

Sadly, but iasl was buggy and didn't compile dsl files.

?

Sorry for this bug. I update this version to a higher build (the same version).

Share this comment


Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.