This is very interesting. If I understand correctly, you are using a utility plus various directives to generate tables of AML offsets -- presumably in order to dynamically change AML values, correct?
I have to say that I have not seen anything like this, from any BIOS vendor.
By the way, is there interest in adding some of the functionality that we get by parsing the listing to iasl directly?
We are always interested in adding features to make the compiler more useful. What would you suggest?
Bob
-----Original Message----- From: Michael S. Tsirkin [mailto:mst@redhat.com] Sent: Sunday, August 05, 2012 1:45 PM To: Moore, Robert Cc: Idwer Vollering; Kevin O'Connor; seabios@seabios.org; Tang, Feng Subject: Re: [SeaBIOS] Compiling SeaBIOS for coreboot has problems with its ACPI code
On Sun, Aug 05, 2012 at 11:36:15PM +0300, Michael S. Tsirkin wrote:
On Mon, Jul 30, 2012 at 07:42:48PM +0000, Moore, Robert wrote:
Yes, you are correct, the listing no longer includes the comments.
Sorry for causing you a problem.
What is happening is that the preprocessor parser is stripping the
comments during the creation of the .i file. Then, the compiler is invoked on the .i file -- thus, the comments are gone.
This is going to take a bit of work to correct, but we will do it.
In the meantime, try using the -Pn flag to disable the
preprocessor. When this flag is set, the preprocessor is completely bypassed and the compiler should function as it did previously.
So we are doing it this way meanwhile. If you change this preprocessor behaviour like you indicated you would, please let us know so e can test.
Thanks!
By the way, is there interest in adding some of the functionality that we get by parsing the listing to iasl directly? Here's what our tool currently supports:
# Process mixed ASL/AML listing (.lst file) produced by iasl -l # Locate and execute ACPI_EXTRACT directives, output offset info # # Documentation of ACPI_EXTRACT_* directive tags: # # These directive tags output offset information from AML for BIOS runtime # table generation. # Each directive is of the form: # ACPI_EXTRACT_<TYPE> <array_name> <Operator> (...) # and causes the extractor to create an array # named <array_name> with offset, in the generated AML, # of an object of a given type in the following <Operator>. # # A directive must fit on a single code line. # # Object type in AML is verified, a mismatch causes a build failure. # # Directives and operators currently supported are: # ACPI_EXTRACT_NAME_DWORD_CONST - extract a Dword Const object from Name() # ACPI_EXTRACT_NAME_WORD_CONST - extract a Word Const object from Name() # ACPI_EXTRACT_NAME_BYTE_CONST - extract a Byte Const object from Name() # ACPI_EXTRACT_METHOD_STRING - extract a NameString from Method() # ACPI_EXTRACT_NAME_STRING - extract a NameString from Name() # ACPI_EXTRACT_PROCESSOR_START - start of Processor() block # ACPI_EXTRACT_PROCESSOR_STRING - extract a NameString from Processor() # ACPI_EXTRACT_PROCESSOR_END - offset at last byte of Processor() + 1 # ACPI_EXTRACT_PKG_START - start of Package block # # ACPI_EXTRACT_ALL_CODE - create an array storing the generated AML bytecode # # ACPI_EXTRACT is not allowed anywhere else in code, except in comments.
Example:
ACPI_EXTRACT_NAME_DWORD_CONST aml_adr_dword Name (_ADR, 0x00010000)
adds the offset of 0x00010000 constant to array aml_adr_dword
Example:
ACPI_EXTRACT_METHOD_STRING aml_ej0_name Method (_EJ0, 1) { Return(PCEJ(0x0001)) }
adds the offset of _EJ0 string to array aml_ej0_name
ACPI_EXTRACT_ALL_CODE ssdp_pcihp_aml
names the array to include the generated AML code
-- MST