On 9/7/21 4:47 PM, Igor Mammedov wrote: > it replaces error-prone pointer arithmetic for build_header() API, > with 2 calls to start and finish table creation, > which hides offsets magic from API user. > > Signed-off-by: Igor Mammedov <imamm...@redhat.com> Reviewed-by: Eric Auger <eric.au...@redhat.com> Eric > --- > v3: > * s/acpi_init_table|acpi_table_composed/acpi_table_begin|acpi_table_end/ > --- > hw/acpi/aml-build.c | 14 +++++++------- > 1 file changed, 7 insertions(+), 7 deletions(-) > > diff --git a/hw/acpi/aml-build.c b/hw/acpi/aml-build.c > index e54face23d..dbf3ffe889 100644 > --- a/hw/acpi/aml-build.c > +++ b/hw/acpi/aml-build.c > @@ -1978,9 +1978,10 @@ void build_fadt(GArray *tbl, BIOSLinker *linker, const > AcpiFadtData *f, > const char *oem_id, const char *oem_table_id) > { > int off; > - int fadt_start = tbl->len; > + AcpiTable table = { .sig = "FACP", .rev = f->rev, > + .oem_id = oem_id, .oem_table_id = oem_table_id }; > > - acpi_data_push(tbl, sizeof(AcpiTableHeader)); > + acpi_table_begin(&table, tbl); > > /* FACS address to be filled by Guest linker at runtime */ > off = tbl->len; > @@ -2044,7 +2045,7 @@ void build_fadt(GArray *tbl, BIOSLinker *linker, const > AcpiFadtData *f, > build_append_int_noprefix(tbl, f->flags, 4); /* Flags */ > > if (f->rev == 1) { > - goto build_hdr; > + goto done; > } > > build_append_gas_from_struct(tbl, &f->reset_reg); /* RESET_REG */ > @@ -2081,7 +2082,7 @@ void build_fadt(GArray *tbl, BIOSLinker *linker, const > AcpiFadtData *f, > build_append_gas(tbl, AML_AS_SYSTEM_MEMORY, 0 , 0, 0, 0); /* X_GPE1_BLK > */ > > if (f->rev <= 4) { > - goto build_hdr; > + goto done; > } > > /* SLEEP_CONTROL_REG */ > @@ -2092,9 +2093,8 @@ void build_fadt(GArray *tbl, BIOSLinker *linker, const > AcpiFadtData *f, > /* TODO: extra fields need to be added to support revisions above rev5 */ > assert(f->rev == 5); > > -build_hdr: > - build_header(linker, tbl, (void *)(tbl->data + fadt_start), > - "FACP", tbl->len - fadt_start, f->rev, oem_id, > oem_table_id); > +done: > + acpi_table_end(linker, &table); > } > > #ifdef CONFIG_TPM >