How to add a new ACPI table to ACPICA and the iASL compiler.
------------------------------------------------------------

There are four main tasks that are needed to provide support for a
new ACPI table:
    1) Create a full definition of the table and any subtables
       in the ACPICA headers.
    2) Add disassembler support for the new table
    3) Add iASL table compiler support for the new table
    4) Create a default template for the new table for iASL -T
       option.

Notes for each of these tasks provided below.


1) Header Support
-----------------

New tables should be added to the appropriate header:
    actbl2.h: Used for new tables that are not defined in the ACPI spec.
    actbl3.h: Used for new tables that are defined in the ACPI spec.

Use ACPI_TABLE_HEADER for the common ACPI table header.
Subtables should be defined separately from the main table.
Don't add placeholder fields for subtables and other multiple data items.
    (Don't use xxxxx[1] for a field that can have multiple items.)
    The disassembler and data table compiler depends on this.
For tables not defined in the ACPI spec, add a comment to indicate where
    the table came from.
Use other table definitions for additional guidance.


2) iASL Disassembler Support
----------------------------

Add definition of the table (and subtables) in common/dmtbinfo.c
Add table access macro(s) of the form ACPI_xxxx_OFFSET
Add ACPI_DMT_TERMINATOR at the end of every table/subtable definition

Add externals for the table/subtable definitions in acdisasm.h
Add an entry for the new table in the AcpiDmTableData in common/dmtable.c

If there are no subtables, add the AcpiDmTableInfoXXXX name to the
    AcpiDmTableData and it will automatically be disassembled.

If there are subtables, a dump routine must be written:
Add an AcpiDmDumpXXXX function to dmtbdump.c -- note, code for another
    similar table can often be ported for the new table.
Add an external for this function to acdisasm.h
Add this function to the AcpiDmTableData entry for the new ACPI table

Debug/Test: Either find an existing example of the new ACPI table, or
    create one using the "generic ACPI table support" included in the
    iASL data table compiler. Use the -G option to force a
    generic compile. It is often best to create the table from scratch,
    since this clearly exposes the dependencies (lengths, offsets, etc.)
    that the Table Compiler support will need to generate.


3) iASL Table Compiler Support
------------------------------

Simple tables do not require a compile routine. The definition of the
    table in common/dmtbinfo.c (created in step 2 above) will suffice.

Complex tables with subtables will require a compile routine with a name
    of the form DtCompileXXXX.
Add a DtCompileXXXX function to the dttable.c module.
Add an external for this function in dtcompiler.h
Add this function to the AcpiDmTableData entry for the new ACPI table
    in common/dmtable.c


4) Template Support (-T iASL option)
------------------------------------

Create an example of the new ACPI table. This example should create
    multiple subtables (if supported), and multiple instances of any
    variable length data.

Compile the example file with the -sc option. This will create a C
    array that contains the table contents.

Add this array to the dttemplate.h file. Name the array TemplateXXXX.
Add this array name to the AcpiDmTableData entry for the new ACPI table

Debug/Test: Create the template file. Compile the file. Disassemble the file.
    Compile the disassembly file.
