summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXiang W <[email protected]>2022-03-16 18:19:18 +0800
committerAnup Patel <[email protected]>2022-03-27 09:44:58 +0530
commit7924a0b220b703ccecd4be654a682e7ce5176e82 (patch)
tree71b45e876e833ab25c26ecd74fd2e802a8b9b8c4
parent1b42d3ace3ed38bda35276838a880db24ba7db82 (diff)
include: Use static asserts for FW_DYNAMIC_INFO_xxx_OFFSET defines
Add static detection to prevent the modification of struct fw_dynamic_info from forgetting the modification of FW_DYNAMIC_INFO_xxx_OFFSET Signed-off-by: Xiang W <[email protected]> Reviewed-by: Anup Patel <[email protected]>
-rw-r--r--include/sbi/fw_dynamic.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/include/sbi/fw_dynamic.h b/include/sbi/fw_dynamic.h
index dea207bc..45c4d5f6 100644
--- a/include/sbi/fw_dynamic.h
+++ b/include/sbi/fw_dynamic.h
@@ -75,6 +75,41 @@ struct fw_dynamic_info {
unsigned long boot_hart;
} __packed;
+/**
+ * Prevent modification of struct fw_dynamic_info from affecting
+ * FW_DYNAMIC_INFO_xxx_OFFSET
+ */
+_Static_assert(
+ offsetof(struct fw_dynamic_info, magic)
+ == FW_DYNAMIC_INFO_MAGIC_OFFSET,
+ "struct fw_dynamic_info definition has changed, please redefine "
+ "FW_DYNAMIC_INFO_MAGIC_OFFSET");
+_Static_assert(
+ offsetof(struct fw_dynamic_info, version)
+ == FW_DYNAMIC_INFO_VERSION_OFFSET,
+ "struct fw_dynamic_info definition has changed, please redefine "
+ "FW_DYNAMIC_INFO_VERSION_OFFSET");
+_Static_assert(
+ offsetof(struct fw_dynamic_info, next_addr)
+ == FW_DYNAMIC_INFO_NEXT_ADDR_OFFSET,
+ "struct fw_dynamic_info definition has changed, please redefine "
+ "FW_DYNAMIC_INFO_NEXT_ADDR_OFFSET");
+_Static_assert(
+ offsetof(struct fw_dynamic_info, next_mode)
+ == FW_DYNAMIC_INFO_NEXT_MODE_OFFSET,
+ "struct fw_dynamic_info definition has changed, please redefine "
+ "FW_DYNAMIC_INFO_NEXT_MODE_OFFSET");
+_Static_assert(
+ offsetof(struct fw_dynamic_info, options)
+ == FW_DYNAMIC_INFO_OPTIONS_OFFSET,
+ "struct fw_dynamic_info definition has changed, please redefine "
+ "FW_DYNAMIC_INFO_OPTIONS_OFFSET");
+_Static_assert(
+ offsetof(struct fw_dynamic_info, boot_hart)
+ == FW_DYNAMIC_INFO_BOOT_HART_OFFSET,
+ "struct fw_dynamic_info definition has changed, please redefine "
+ "FW_DYNAMIC_INFO_BOOT_HART_OFFSET");
+
#endif
#endif