[SeaBIOS] Compiling SeaBIOS for coreboot has problems with its ACPI code

Michael S. Tsirkin mst at redhat.com
Sun Aug 5 22:44:49 CEST 2012


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



More information about the SeaBIOS mailing list