summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXiang W <wxjstz@126.com>2022-03-16 13:19:18 +0300
committerAnup Patel <anup@brainfault.org>2022-03-27 07:14:58 +0300
commit7924a0b220b703ccecd4be654a682e7ce5176e82 (patch)
tree71b45e876e833ab25c26ecd74fd2e802a8b9b8c4
parent1b42d3ace3ed38bda35276838a880db24ba7db82 (diff)
downloadopensbi-7924a0b220b703ccecd4be654a682e7ce5176e82.tar.xz
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 <wxjstz@126.com> Reviewed-by: Anup Patel <anup@brainfault.org>
-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 dea207b..45c4d5f 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