]>
Commit | Line | Data |
---|---|---|
3248f1b4 BW |
1 | /* |
2 | * Utilities for working with ACPI tables | |
3 | * | |
4 | * Copyright (c) 2013 Red Hat Inc. | |
5 | * | |
6 | * Authors: | |
7 | * Michael S. Tsirkin <[email protected]>, | |
8 | * | |
9 | * This work is licensed under the terms of the GNU GPL, version 2 or later. | |
10 | * See the COPYING file in the top-level directory. | |
11 | */ | |
12 | ||
13 | #ifndef TEST_ACPI_UTILS_H | |
14 | #define TEST_ACPI_UTILS_H | |
15 | ||
3248f1b4 BW |
16 | #include "libqtest.h" |
17 | ||
18 | /* DSDT and SSDTs format */ | |
19 | typedef struct { | |
b137522c | 20 | uint8_t *aml; /* aml bytecode from guest */ |
acee774b | 21 | uint32_t aml_len; |
3248f1b4 BW |
22 | gchar *aml_file; |
23 | gchar *asl; /* asl code generated from aml */ | |
24 | gsize asl_len; | |
25 | gchar *asl_file; | |
26 | bool tmp_files_retain; /* do not delete the temp asl/aml */ | |
0d876080 | 27 | } AcpiSdtTable; |
3248f1b4 | 28 | |
3248f1b4 | 29 | #define ACPI_ASSERT_CMP(actual, expected) do { \ |
3248f1b4 | 30 | char ACPI_ASSERT_CMP_str[5] = {}; \ |
3831c07b | 31 | memcpy(ACPI_ASSERT_CMP_str, &actual, 4); \ |
3248f1b4 BW |
32 | g_assert_cmpstr(ACPI_ASSERT_CMP_str, ==, expected); \ |
33 | } while (0) | |
34 | ||
35 | #define ACPI_ASSERT_CMP64(actual, expected) do { \ | |
3248f1b4 | 36 | char ACPI_ASSERT_CMP_str[9] = {}; \ |
3831c07b | 37 | memcpy(ACPI_ASSERT_CMP_str, &actual, 8); \ |
3248f1b4 BW |
38 | g_assert_cmpstr(ACPI_ASSERT_CMP_str, ==, expected); \ |
39 | } while (0) | |
40 | ||
77af8a2b | 41 | |
acee774b IM |
42 | #define ACPI_FOREACH_RSDT_ENTRY(table, table_len, entry_ptr, entry_size) \ |
43 | for (entry_ptr = table + 36 /* 1st Entry */; \ | |
44 | entry_ptr < table + table_len; \ | |
45 | entry_ptr += entry_size) | |
77af8a2b | 46 | |
3248f1b4 | 47 | uint8_t acpi_calc_checksum(const uint8_t *data, int len); |
273e3d92 | 48 | uint32_t acpi_find_rsdp_address(QTestState *qts); |
d6caf363 SO |
49 | uint64_t acpi_get_xsdt_address(uint8_t *rsdp_table); |
50 | void acpi_parse_rsdp_table(QTestState *qts, uint32_t addr, uint8_t *rsdp_table); | |
acee774b IM |
51 | void acpi_fetch_table(QTestState *qts, uint8_t **aml, uint32_t *aml_len, |
52 | const uint8_t *addr_ptr, const char *sig, | |
53 | bool verify_checksum); | |
3248f1b4 BW |
54 | |
55 | #endif /* TEST_ACPI_UTILS_H */ |