mirror of
https://github.com/qemu/qemu.git
synced 2024-11-28 14:24:02 +08:00
b137522c35
AcpiSdtTable::header::signature is the only remained field from AcpiTableHeader structure used by tests. Instead of using packed structure to access signature, just read it directly from table blob and remove no longer used AcpiSdtTable::header / union and keep only AcpiSdtTable::aml byte array. Signed-off-by: Igor Mammedov <imammedo@redhat.com> Acked-by: Thomas Huth <thuth@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
56 lines
1.8 KiB
C
56 lines
1.8 KiB
C
/*
|
|
* Utilities for working with ACPI tables
|
|
*
|
|
* Copyright (c) 2013 Red Hat Inc.
|
|
*
|
|
* Authors:
|
|
* Michael S. Tsirkin <mst@redhat.com>,
|
|
*
|
|
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
|
* See the COPYING file in the top-level directory.
|
|
*/
|
|
|
|
#ifndef TEST_ACPI_UTILS_H
|
|
#define TEST_ACPI_UTILS_H
|
|
|
|
#include "libqtest.h"
|
|
|
|
/* DSDT and SSDTs format */
|
|
typedef struct {
|
|
uint8_t *aml; /* aml bytecode from guest */
|
|
uint32_t aml_len;
|
|
gchar *aml_file;
|
|
gchar *asl; /* asl code generated from aml */
|
|
gsize asl_len;
|
|
gchar *asl_file;
|
|
bool tmp_files_retain; /* do not delete the temp asl/aml */
|
|
} AcpiSdtTable;
|
|
|
|
#define ACPI_ASSERT_CMP(actual, expected) do { \
|
|
char ACPI_ASSERT_CMP_str[5] = {}; \
|
|
memcpy(ACPI_ASSERT_CMP_str, &actual, 4); \
|
|
g_assert_cmpstr(ACPI_ASSERT_CMP_str, ==, expected); \
|
|
} while (0)
|
|
|
|
#define ACPI_ASSERT_CMP64(actual, expected) do { \
|
|
char ACPI_ASSERT_CMP_str[9] = {}; \
|
|
memcpy(ACPI_ASSERT_CMP_str, &actual, 8); \
|
|
g_assert_cmpstr(ACPI_ASSERT_CMP_str, ==, expected); \
|
|
} while (0)
|
|
|
|
|
|
#define ACPI_FOREACH_RSDT_ENTRY(table, table_len, entry_ptr, entry_size) \
|
|
for (entry_ptr = table + 36 /* 1st Entry */; \
|
|
entry_ptr < table + table_len; \
|
|
entry_ptr += entry_size)
|
|
|
|
uint8_t acpi_calc_checksum(const uint8_t *data, int len);
|
|
uint32_t acpi_find_rsdp_address(QTestState *qts);
|
|
uint64_t acpi_get_xsdt_address(uint8_t *rsdp_table);
|
|
void acpi_parse_rsdp_table(QTestState *qts, uint32_t addr, uint8_t *rsdp_table);
|
|
void acpi_fetch_table(QTestState *qts, uint8_t **aml, uint32_t *aml_len,
|
|
const uint8_t *addr_ptr, const char *sig,
|
|
bool verify_checksum);
|
|
|
|
#endif /* TEST_ACPI_UTILS_H */
|