From: Robert Moore <robert.moore@xxxxxxxxx> Thus, even if the default compiler setting is non-aligned, the header is compiled correctly. Signed-off-by: Alexey Starikovskiy <alexey.y.starikovskiy@xxxxxxxxx> Signed-off-by: Len Brown <len.brown@xxxxxxxxx> --- include/acpi/acobject.h | 17 +++++++++++++++-- include/acpi/actypes.h | 4 ++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/include/acpi/acobject.h b/include/acpi/acobject.h index 8fdee31..b81e923 100644 --- a/include/acpi/acobject.h +++ b/include/acpi/acobject.h @@ -52,7 +52,15 @@ * to the interpreter, and to keep track of the various handlers such as * address space handlers and notify handlers. The object is a constant * size in order to allow it to be cached and reused. + * + * Note: The object is optimized to be aligned and will not work if it is + * byte-packed. */ +#if ACPI_MACHINE_WIDTH == 64 +#pragma pack(8) +#else +#pragma pack(4) +#endif /******************************************************************************* * @@ -101,7 +109,8 @@ struct acpi_object_common { ACPI_OBJECT_COMMON_HEADER}; struct acpi_object_integer { - ACPI_OBJECT_COMMON_HEADER acpi_integer value; + ACPI_OBJECT_COMMON_HEADER u8 fill[3]; /* Prevent warning on some compilers */ + acpi_integer value; }; /* @@ -203,7 +212,9 @@ struct acpi_object_power_resource { }; struct acpi_object_processor { - ACPI_OBJECT_COMMON_HEADER u8 proc_id; + ACPI_OBJECT_COMMON_HEADER + /* The next two fields take advantage of the 3-byte space before NOTIFY_INFO */ + u8 proc_id; u8 length; ACPI_COMMON_NOTIFY_INFO acpi_io_address address; }; @@ -406,4 +417,6 @@ union acpi_descriptor { union acpi_parse_object op; }; +#pragma pack() + #endif /* _ACOBJECT_H */ diff --git a/include/acpi/actypes.h b/include/acpi/actypes.h index 6fa3f2a..d213f97 100644 --- a/include/acpi/actypes.h +++ b/include/acpi/actypes.h @@ -156,6 +156,7 @@ typedef u64 acpi_physical_address; #define ACPI_MAX_PTR ACPI_UINT64_MAX #define ACPI_SIZE_MAX ACPI_UINT64_MAX +#define ACPI_NATIVE_BOUNDARY 8 #define ACPI_USE_NATIVE_DIVIDE /* Has native 64-bit integer support */ /* @@ -196,6 +197,8 @@ typedef u32 acpi_physical_address; #define ACPI_MAX_PTR ACPI_UINT32_MAX #define ACPI_SIZE_MAX ACPI_UINT32_MAX +#define ACPI_NATIVE_BOUNDARY 4 + /******************************************************************************* * * Types specific to 16-bit targets @@ -222,6 +225,7 @@ typedef char *acpi_physical_address; #define ACPI_MAX_PTR ACPI_UINT16_MAX #define ACPI_SIZE_MAX ACPI_UINT16_MAX +#define ACPI_NATIVE_BOUNDARY 2 #define ACPI_USE_NATIVE_DIVIDE /* No 64-bit integers, ok to use native divide */ /* 64-bit integers cannot be supported */ -- 1.4.4.1 - To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html