HAOUAS Elyes has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/45273 )
Change subject: nb/intel/i945/acpi: Convert igd.asl to ASL 2.0 syntax ......................................................................
Patch Set 5:
(1 comment)
https://review.coreboot.org/c/coreboot/+/45273/4/src/northbridge/intel/i945/... File src/northbridge/intel/i945/acpi/igd.asl:
https://review.coreboot.org/c/coreboot/+/45273/4/src/northbridge/intel/i945/... PS4, Line 42: }
let wait acpica's developers answer
Here is the answer from acpica's developers:
"Here's what I think is going on. Yes, the optimization is different between the two statements. From the listing file (-l compiler option):
18: Store (Or(ShiftLeft (Arg0, 4), 0xf), ^^DSPC.BRTC)
0000003F: 70 ..................... "p" 00000040: 7D ..................... "}" 00000041: 79 68 0A 04 00 0A 0F 00 "yh......" 00000049: 5E 5E 2E 44 53 50 43 42 "^^.DSPCB" 00000051: 52 54 43 ............... "RTC"
19: ^^DSPC.BRTC = ((Arg0 << 0x04) | 0x0F)
00000054: 7D ..................... "}" 00000055: 79 68 0A 04 00 0A 0F 5E "yh.....^" 0000005D: 5E 2E 44 53 50 43 42 52 "^.DSPCBR" 00000065: 54 43 .................. "TC"
In the first statement, the "Store" instruction (0x70) is simply passed through to the .aml In the second statement, the implied "Store" instruction (part of "^^DSPC.BRTC =" (the OR is opcode 0x7d) is optimized away, and the "Or" instruction does the "Store" as the third argument (the "target" operand).
Considering that the iASL compiler is essentially two compilers (Legacy ASL, and ASL v2), the Legacy ASL part of the compiler does not have the support to optimize the "Store" instruction away, but the ASL v2 compiler does have this support.
Thus, the resulting .aml files are different."
(https://github.com/acpica/acpica/issues/631)