Messages in this thread Patch in this message | | | From | Chao Fan <> | Subject | [RFC PATCH v2 1/4] x86/boot: Add acpitb.h to help parse acpi tables | Date | Mon, 16 Jul 2018 16:55:35 +0800 |
| |
In order to parse ACPI tables, reuse the head file linux/acpi.h, so that the files in 'compressed' directory can read ACPI table by including this head file.
Signed-off-by: Chao Fan <fanc.fnst@cn.fujitsu.com> --- arch/x86/boot/compressed/acpitb.h | 49 +++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 arch/x86/boot/compressed/acpitb.h
diff --git a/arch/x86/boot/compressed/acpitb.h b/arch/x86/boot/compressed/acpitb.h new file mode 100644 index 000000000000..b51dedb7c46f --- /dev/null +++ b/arch/x86/boot/compressed/acpitb.h @@ -0,0 +1,49 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#include <linux/acpi.h> + +#define ACPI_MAX_TABLES 128 + +struct acpi_table_header *get_acpi_srat_table(void); + +#ifdef ACPI_BIG_ENDIAN + +#define ACPI_MOVE_64_TO_64(d, s) \ +{((u8 *)(void *)(d))[0] = ((u8 *)(void *)(s))[7]; \ +((u8 *)(void *)(d))[1] = ((u8 *)(void *)(s))[6]; \ +((u8 *)(void *)(d))[2] = ((u8 *)(void *)(s))[5]; \ +((u8 *)(void *)(d))[3] = ((u8 *)(void *)(s))[4]; \ +((u8 *)(void *)(d))[4] = ((u8 *)(void *)(s))[3]; \ +((u8 *)(void *)(d))[5] = ((u8 *)(void *)(s))[2]; \ +((u8 *)(void *)(d))[6] = ((u8 *)(void *)(s))[1]; \ +((u8 *)(void *)(d))[7] = ((u8 *)(void *)(s))[0]; } + +#define ACPI_MOVE_16_TO_32(d, s) \ +{(*(u32 *)(void *)(d)) = 0; \ +((u8 *)(void *)(d))[2] = ((u8 *)(void *)(s))[1]; \ +((u8 *)(void *)(d))[3] = ((u8 *)(void *)(s))[0]; } + +#else +#ifndef ACPI_MISALIGNMENT_NOT_SUPPORTED + +#define ACPI_MOVE_64_TO_64(d, s) \ +{*(u64 *)(void *)(d) = *(u64 *)(void *)(s); } + +#define ACPI_MOVE_16_TO_32(d, s) \ +{*(u32 *)(void *)(d) = *(u16 *)(void *)(s); } + +#else +#define ACPI_MOVE_64_TO_64(d, s) \ +{((u8 *)(void *)(d))[0] = ((u8 *)(void *)(s))[0]; \ +((u8 *)(void *)(d))[1] = ((u8 *)(void *)(s))[1]; \ +((u8 *)(void *)(d))[2] = ((u8 *)(void *)(s))[2]; \ +((u8 *)(void *)(d))[3] = ((u8 *)(void *)(s))[3]; \ +((u8 *)(void *)(d))[4] = ((u8 *)(void *)(s))[4]; \ +((u8 *)(void *)(d))[5] = ((u8 *)(void *)(s))[5]; \ +((u8 *)(void *)(d))[6] = ((u8 *)(void *)(s))[6]; \ +((u8 *)(void *)(d))[7] = ((u8 *)(void *)(s))[7]; } + +#define ACPI_MOVE_16_TO_32(d, s) \ +{(*(u32 *)(void *)(d)) = 0; ACPI_MOVE_16_TO_16(d, s); } + +#endif +#endif -- 2.17.1
| |