mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
device-tree: bootfdt: Fix build issue when CONFIG_PHYS_ADDR_T_32=y
On Arm32, when CONFIG_PHYS_ADDR_T_32 is set, a build failure is observed:
common/device-tree/bootfdt.c: In function 'build_assertions':
./include/xen/macros.h:47:31: error: static assertion failed: "!(alignof(struct membanks) != 8)"
47 | #define BUILD_BUG_ON(cond) ({ _Static_assert(!(cond), "!(" #cond ")"); })
| ^~~~~~~~~~~~~~
common/device-tree/bootfdt.c:31:5: note: in expansion of macro 'BUILD_BUG_ON'
31 | BUILD_BUG_ON(alignof(struct membanks) != 8);
When CONFIG_PHYS_ADDR_T_32 is set, paddr_t is defined as unsigned long,
therefore the struct membanks alignment is 4B and not 8B. The check is
there to ensure the struct membanks and struct membank, which is a
member of the former, are equally aligned. Therefore modify the check to
compare alignments obtained via alignof not to rely on hardcoded
values.
Fixes: 2209c1e35b ("xen/arm: Introduce a generic way to access memory bank structures")
Signed-off-by: Michal Orzel <michal.orzel@amd.com>
Release-Acked-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Tested-by: Luca Fancellu <luca.fancellu@arm.com>
Reviewed-by: Julien Grall <julien@xen.org>
This commit is contained in:
1 parent
dd05d265b8
commit
d59699e63d
1 file changed
+2
-2
@@ -27,8 +27,8 @@ static void __init __maybe_unused build_assertions(void)
|
||||
*/
|
||||
BUILD_BUG_ON((offsetof(struct membanks, bank) !=
|
||||
offsetof(struct meminfo, bank)));
|
||||
/* Ensure "struct membanks" is 8-byte aligned */
|
||||
BUILD_BUG_ON(alignof(struct membanks) != 8);
|
||||
/* Ensure "struct membanks" and "struct membank" are equally aligned */
|
||||
BUILD_BUG_ON(alignof(struct membanks) != alignof(struct membank));
|
||||
}
|
||||
|
||||
static bool __init device_tree_node_is_available(const void *fdt, int node)
|
||||
|
||||