[coreboot] FYI: ACPI ASL 2.0

ron minnich rminnich at gmail.com
Tue Sep 20 21:11:34 CEST 2016


It would be nice if there were a source to source transformation tool out
there but failing that RPN to infix is pretty simple to automate.

ron

On Tue, Sep 20, 2016 at 12:03 PM Duncan Laurie <dlaurie at chromium.org> wrote:

> So far I've been asking people in ACPI patches to not introduce ASL 2.0
> syntax into existing ASL code as it can be confusing if the two are mixed.
> So we should either convert everything or at least only use ASL 2.0 syntax
> in new files.
>
> The problem with auto-converting sources with the disassembly/assembly
> trick is you lose all the comments.
>
> The problem with doing it by hand is it very easy to mess something up.
>
> -duncan
>
>
> On Tue, Sep 20, 2016 at 11:39 AM, Marc Jones <marcj303 at gmail.com> wrote:
>
>> Hi Rudolf,
>>
>> I'm for this change. I don't think it would be too invasive and should be
>> easy to test with the compiler.
>>
>> Marc
>>
>>
>> On Mon, Sep 19, 2016 at 2:49 PM Rudolf Marek <r.marek at assembler.cz>
>> wrote:
>>
>>> Hi all,
>>>
>>> Just FYI [1], maybe you already know.
>>>
>>> There is an alternate syntax available for ACPI ASL sources.
>>> It just converts Polish notation  of ASL to something less geeky like C
>>> operators. It says that the tool to convert the sources is in
>>> development (to
>>> ratain comments). I think it would make ACPI more readable if coreboot
>>> would
>>> switch to ASL 2.0. Note that the change is only on syntax side! Latest
>>> ACPICA
>>> iasl already decompiles to this syntax by default!
>>>
>>> Example before:
>>>
>>>       Method (SRDY, 0, Serialized)
>>>         {
>>>                 Store (200, Local0)     // Timeout 200ms
>>>                 While (Local0) {
>>>                         If (And(HSTS, 0x40)) {          // IN_USE?
>>>                                 Sleep(1)                // Wait 1ms
>>>                                 Decrement(Local0)       // timeout--
>>>                                 If (LEqual(Local0, 0)) {
>>>                                         Return (1)
>>>                                 }
>>>                         } Else {
>>>                                 Store (0, Local0)       // We're ready
>>>                         }
>>>                 }
>>>
>>>                 Store (4000, Local0)    // Timeout 200ms (50us * 4000)
>>>                 While (Local0) {
>>>                         If (And (HSTS, 0x01)) {         // Host Busy?
>>>                                 Stall(50)               // Wait 50us
>>>                                 Decrement(Local0)       // timeout--
>>>                                 If (LEqual(Local0, 0)) {
>>>                                         KILL()
>>>                                 }
>>>                         } Else {
>>>                                 Return (0)              // Success
>>>                         }
>>>                 }
>>>
>>>                 Return (1)              // Failure
>>>         }
>>>
>>>
>>> After:
>>>
>>>         Method (SRDY, 0, Serialized)
>>>         {
>>>             Local0 = 0xC8
>>>             While (Local0)
>>>             {
>>>                 If (HSTS & 0x40)
>>>                 {
>>>                     Sleep (0x01)
>>>                     Local0--
>>>                     If (Local0 == 0x00)
>>>                     {
>>>                         Return (0x01)
>>>                     }
>>>                 }
>>>                 Else
>>>                 {
>>>                     Local0 = 0x00
>>>                 }
>>>             }
>>>
>>>             Local0 = 0x0FA0
>>>             While (Local0)
>>>             {
>>>                 If (HSTS & 0x01)
>>>                 {
>>>                     Stall (0x32)
>>>                     Local0--
>>>                     If (Local0 == 0x00)
>>>                     {
>>>                         KILL ()
>>>                     }
>>>                 }
>>>                 Else
>>>                 {
>>>                     Return (0x00)
>>>                 }
>>>             }
>>>
>>>             Return (0x01)
>>>         }
>>>
>>>
>>> Thanks
>>> Rudolf
>>>
>>>
>>> [1] https://acpica.org/sites/acpica/files/ASL2.0Overview.pdf
>>>
>>>
>>> --
>>> coreboot mailing list: coreboot at coreboot.org
>>> https://www.coreboot.org/mailman/listinfo/coreboot
>>>
>> --
>> http://marcjonesconsulting.com
>>
>> --
>> coreboot mailing list: coreboot at coreboot.org
>> https://www.coreboot.org/mailman/listinfo/coreboot
>>
>
> --
> coreboot mailing list: coreboot at coreboot.org
> https://www.coreboot.org/mailman/listinfo/coreboot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.coreboot.org/pipermail/coreboot/attachments/20160920/669b3ac1/attachment.html>


More information about the coreboot mailing list