mirror of https://gitee.com/openkylin/qemu.git
acpi: build_facs: use build_append_int_noprefix() API to compose table
Drop usage of packed structures and explicit endian conversions when building table and use endian agnostic build_append_int_noprefix() API to build it. Signed-off-by: Igor Mammedov <imammedo@redhat.com> Reviewed-by: Eric Auger <eric.auger@redhat.com> Message-Id: <20210924122802.1455362-34-imammedo@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
41041e5708
commit
cf68410bc9
|
@ -345,13 +345,23 @@ static void acpi_align_size(GArray *blob, unsigned align)
|
|||
g_array_set_size(blob, ROUND_UP(acpi_data_len(blob), align));
|
||||
}
|
||||
|
||||
/* FACS */
|
||||
/*
|
||||
* ACPI spec 1.0b,
|
||||
* 5.2.6 Firmware ACPI Control Structure
|
||||
*/
|
||||
static void
|
||||
build_facs(GArray *table_data)
|
||||
{
|
||||
AcpiFacsDescriptorRev1 *facs = acpi_data_push(table_data, sizeof *facs);
|
||||
memcpy(&facs->signature, "FACS", 4);
|
||||
facs->length = cpu_to_le32(sizeof(*facs));
|
||||
const char *sig = "FACS";
|
||||
const uint8_t reserved[40] = {};
|
||||
|
||||
g_array_append_vals(table_data, sig, 4); /* Signature */
|
||||
build_append_int_noprefix(table_data, 64, 4); /* Length */
|
||||
build_append_int_noprefix(table_data, 0, 4); /* Hardware Signature */
|
||||
build_append_int_noprefix(table_data, 0, 4); /* Firmware Waking Vector */
|
||||
build_append_int_noprefix(table_data, 0, 4); /* Global Lock */
|
||||
build_append_int_noprefix(table_data, 0, 4); /* Flags */
|
||||
g_array_append_vals(table_data, reserved, 40); /* Reserved */
|
||||
}
|
||||
|
||||
static void build_append_pcihp_notify_entry(Aml *method, int slot)
|
||||
|
|
|
@ -117,18 +117,4 @@ typedef struct AcpiFadtData {
|
|||
#define ACPI_FADT_ARM_PSCI_COMPLIANT (1 << 0)
|
||||
#define ACPI_FADT_ARM_PSCI_USE_HVC (1 << 1)
|
||||
|
||||
/*
|
||||
* ACPI 1.0 Firmware ACPI Control Structure (FACS)
|
||||
*/
|
||||
struct AcpiFacsDescriptorRev1 {
|
||||
uint32_t signature; /* ACPI Signature */
|
||||
uint32_t length; /* Length of structure, in bytes */
|
||||
uint32_t hardware_signature; /* Hardware configuration signature */
|
||||
uint32_t firmware_waking_vector; /* ACPI OS waking vector */
|
||||
uint32_t global_lock; /* Global Lock */
|
||||
uint32_t flags;
|
||||
uint8_t resverved3 [40]; /* Reserved - must be zero */
|
||||
} QEMU_PACKED;
|
||||
typedef struct AcpiFacsDescriptorRev1 AcpiFacsDescriptorRev1;
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue