Commit 7c9626ba authored by Bob Moore's avatar Bob Moore Committed by Len Brown

ACPICA: Ensure that all structures in acobject.h are aligned, via #pragma.

Thus, even if the default compiler setting is non-aligned, the header is compiled
 correctly.
Signed-off-by: default avatarAlexey Starikovskiy <alexey.y.starikovskiy@intel.com>
Signed-off-by: default avatarLen Brown <len.brown@intel.com>
parent 8876016b
...@@ -52,7 +52,15 @@ ...@@ -52,7 +52,15 @@
* to the interpreter, and to keep track of the various handlers such as * to the interpreter, and to keep track of the various handlers such as
* address space handlers and notify handlers. The object is a constant * address space handlers and notify handlers. The object is a constant
* size in order to allow it to be cached and reused. * 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 { ...@@ -101,7 +109,8 @@ struct acpi_object_common {
ACPI_OBJECT_COMMON_HEADER}; ACPI_OBJECT_COMMON_HEADER};
struct acpi_object_integer { 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 { ...@@ -203,7 +212,9 @@ struct acpi_object_power_resource {
}; };
struct acpi_object_processor { 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; u8 length;
ACPI_COMMON_NOTIFY_INFO acpi_io_address address; ACPI_COMMON_NOTIFY_INFO acpi_io_address address;
}; };
...@@ -406,4 +417,6 @@ union acpi_descriptor { ...@@ -406,4 +417,6 @@ union acpi_descriptor {
union acpi_parse_object op; union acpi_parse_object op;
}; };
#pragma pack()
#endif /* _ACOBJECT_H */ #endif /* _ACOBJECT_H */
...@@ -156,6 +156,7 @@ typedef u64 acpi_physical_address; ...@@ -156,6 +156,7 @@ typedef u64 acpi_physical_address;
#define ACPI_MAX_PTR ACPI_UINT64_MAX #define ACPI_MAX_PTR ACPI_UINT64_MAX
#define ACPI_SIZE_MAX 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 */ #define ACPI_USE_NATIVE_DIVIDE /* Has native 64-bit integer support */
/* /*
...@@ -196,6 +197,8 @@ typedef u32 acpi_physical_address; ...@@ -196,6 +197,8 @@ typedef u32 acpi_physical_address;
#define ACPI_MAX_PTR ACPI_UINT32_MAX #define ACPI_MAX_PTR ACPI_UINT32_MAX
#define ACPI_SIZE_MAX ACPI_UINT32_MAX #define ACPI_SIZE_MAX ACPI_UINT32_MAX
#define ACPI_NATIVE_BOUNDARY 4
/******************************************************************************* /*******************************************************************************
* *
* Types specific to 16-bit targets * Types specific to 16-bit targets
...@@ -222,6 +225,7 @@ typedef char *acpi_physical_address; ...@@ -222,6 +225,7 @@ typedef char *acpi_physical_address;
#define ACPI_MAX_PTR ACPI_UINT16_MAX #define ACPI_MAX_PTR ACPI_UINT16_MAX
#define ACPI_SIZE_MAX 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 */ #define ACPI_USE_NATIVE_DIVIDE /* No 64-bit integers, ok to use native divide */
/* 64-bit integers cannot be supported */ /* 64-bit integers cannot be supported */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment