Jump to content

Why you need proper AML disassembly


uglyJoe
 Share

4 posts in this topic

Recommended Posts

If you open your system's DSDT in MaciASL or simply use a extracted one from AmiBoardBios you will get something like that at the top of your file:

    /*
     * iASL Warning: There were 12 external control methods found during
     * disassembly, but additional ACPI tables to resolve these externals
     * were not specified. This resulting disassembler output file may not
     * compile because the disassembler did not know how many arguments
     * to assign to these methods. To specify the tables needed to resolve
     * external control method references, use the one of the following
     * example iASL invocations:
     *     iasl -e <ssdt1.aml,ssdt2.aml...> -d <dsdt.aml>
     *     iasl -e <dsdt.aml,ssdt2.aml...> -d <ssdt1.aml>
     */

If you start the compiler, you may get errors like:
"... syntax error, unexpected PARSEOPT_ARG0"
The corresponding code is something like this:

    Method (ADBG, 1, Serialized)
    {
        If (CondRefOf (MDBG))
        {
            Return (MDBG)
            Arg0
        }

        Return (Zero)
    } 

 

The solution is simple because it comes with the iASL warning above.

iasl -e <ssdt1.aml,ssdt2.aml...> -d <dsdt.aml>

or for dissembling all files at once:

iasl -da DSDT.aml SSDT*.aml 

If you do it like advised, you don't get this kind of errors and the method looks like that:


    Method (ADBG, 1, Serialized)
    {
        If (CondRefOf (MDBG))
        {
            Return (MDBG (Arg0))
        }

        Return (Zero)
    }

If I do this for my Gigabyte H81M-HD3, I got only the well known "Name already exits in this scope..." errors.

But IHMO, these are homemade (iASL) errors because iASL puts the unresolved methods at the top of the .dsl file.

If I put them back to the end of the first block where all external methods are defined - all errors are gone.

No other fixes where needed to compile my DSDT.

 

But how to get all the necessary SSDT's from OS X?

Simple again, read this http://www.insanelymac.com/forum/topic/301861-uefitableextract/

 

Have fun!

 

  • Like 3
Link to comment
Share on other sites

  • 3 months later...

I am trying to convert ASL (*.dsl) to AML (*.dat) file (using iasl -tc *.dsl )but i am facing this error

------------------------------------------------------------------------------------
Intel ACPI Component Architecture
ASL+ Optimizing Compiler version 20150204-64 [Feb  5 2015]
Copyright © 2000 - 2015 Intel Corporation

Compiler aborting due to parser-detected syntax error(s)
dsdt.dsl     66:         }
Error    6126 -         ^ syntax error, unexpected '}'

dsdt.dsl  13916:
Error    6126 - syntax error, unexpected $end and premature End-Of-File

ASL Input:     dsdt.dsl - 13916 lines, 431044 bytes, 5401 keywords
Hex Dump:      dsdt.hex - 217 bytes

Compilation complete. 2 Errors, 0 Warnings, 0 Remarks, 0 Optimizations
--------------------------------------------------------------------------------------------------------------------
 

and we did not change the *.dsl (ASL)file
which i got from iasl -d *.dat

Link to comment
Share on other sites

I am trying to convert ASL (*.dsl) to AML (*.dat) file (using iasl -tc *.dsl )but i am facing this error

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

Intel ACPI Component Architecture

ASL+ Optimizing Compiler version 20150204-64 [Feb  5 2015]

Copyright © 2000 - 2015 Intel Corporation

 

Compiler aborting due to parser-detected syntax error(s)

dsdt.dsl     66:         }

Error    6126 -         ^ syntax error, unexpected '}'

 

dsdt.dsl  13916:

Error    6126 - syntax error, unexpected $end and premature End-Of-File

 

ASL Input:     dsdt.dsl - 13916 lines, 431044 bytes, 5401 keywords

Hex Dump:      dsdt.hex - 217 bytes

 

Compilation complete. 2 Errors, 0 Warnings, 0 Remarks, 0 Optimizations

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

 

and we did not change the *.dsl (ASL)file

which i got from iasl -d *.dat

You have an error in your DSL source that you need to fix.

Link to comment
Share on other sites

I am getting error on this line, But not able to debug it.

 

    Method (ADBG, 1, Serialized)
    {
        If (CondRefOf (MDBG))
        {
            Return (MDBG) /* External reference */
            Arg0
        } // getting error at this point

        Return (Zero)
    }
 

please download the complete file and let me know why i got this error.
 

https://www.dropbox.com/s/gu5isqaomsley1e/dsdt.dsl?dl=0

Link to comment
Share on other sites

 Share

×
×
  • Create New...