mirror of
https://github.com/riscv-software-src/opensbi.git
synced 2025-08-24 23:41:23 +01:00
include: Use static asserts for SBI_PLATFORM_xxx_OFFSET defines
Add static detection to prevent the modification of struct sbi_platform from forgetting the modification of SBI_PLATFORM_xxx_OFFSET Signed-off-by: Xiang W <wxjstz@126.com> Reviewed-by: Anup Patel <anup@brainfault.org>
This commit is contained in:
@@ -175,6 +175,56 @@ struct sbi_platform {
|
|||||||
const u32 *hart_index2id;
|
const u32 *hart_index2id;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prevent modification of struct sbi_platform from affecting
|
||||||
|
* SBI_PLATFORM_xxx_OFFSET
|
||||||
|
*/
|
||||||
|
_Static_assert(
|
||||||
|
offsetof(struct sbi_platform, opensbi_version)
|
||||||
|
== SBI_PLATFORM_OPENSBI_VERSION_OFFSET,
|
||||||
|
"struct sbi_platform definition has changed, please redefine "
|
||||||
|
"SBI_PLATFORM_OPENSBI_VERSION_OFFSET");
|
||||||
|
_Static_assert(
|
||||||
|
offsetof(struct sbi_platform, platform_version)
|
||||||
|
== SBI_PLATFORM_VERSION_OFFSET,
|
||||||
|
"struct sbi_platform definition has changed, please redefine "
|
||||||
|
"SBI_PLATFORM_VERSION_OFFSET");
|
||||||
|
_Static_assert(
|
||||||
|
offsetof(struct sbi_platform, name)
|
||||||
|
== SBI_PLATFORM_NAME_OFFSET,
|
||||||
|
"struct sbi_platform definition has changed, please redefine "
|
||||||
|
"SBI_PLATFORM_NAME_OFFSET");
|
||||||
|
_Static_assert(
|
||||||
|
offsetof(struct sbi_platform, features)
|
||||||
|
== SBI_PLATFORM_FEATURES_OFFSET,
|
||||||
|
"struct sbi_platform definition has changed, please redefine "
|
||||||
|
"SBI_PLATFORM_FEATURES_OFFSET");
|
||||||
|
_Static_assert(
|
||||||
|
offsetof(struct sbi_platform, hart_count)
|
||||||
|
== SBI_PLATFORM_HART_COUNT_OFFSET,
|
||||||
|
"struct sbi_platform definition has changed, please redefine "
|
||||||
|
"SBI_PLATFORM_HART_COUNT_OFFSET");
|
||||||
|
_Static_assert(
|
||||||
|
offsetof(struct sbi_platform, hart_stack_size)
|
||||||
|
== SBI_PLATFORM_HART_STACK_SIZE_OFFSET,
|
||||||
|
"struct sbi_platform definition has changed, please redefine "
|
||||||
|
"SBI_PLATFORM_HART_STACK_SIZE_OFFSET");
|
||||||
|
_Static_assert(
|
||||||
|
offsetof(struct sbi_platform, platform_ops_addr)
|
||||||
|
== SBI_PLATFORM_OPS_OFFSET,
|
||||||
|
"struct sbi_platform definition has changed, please redefine "
|
||||||
|
"SBI_PLATFORM_OPS_OFFSET");
|
||||||
|
_Static_assert(
|
||||||
|
offsetof(struct sbi_platform, firmware_context)
|
||||||
|
== SBI_PLATFORM_FIRMWARE_CONTEXT_OFFSET,
|
||||||
|
"struct sbi_platform definition has changed, please redefine "
|
||||||
|
"SBI_PLATFORM_FIRMWARE_CONTEXT_OFFSET");
|
||||||
|
_Static_assert(
|
||||||
|
offsetof(struct sbi_platform, hart_index2id)
|
||||||
|
== SBI_PLATFORM_HART_INDEX2ID_OFFSET,
|
||||||
|
"struct sbi_platform definition has changed, please redefine "
|
||||||
|
"SBI_PLATFORM_HART_INDEX2ID_OFFSET");
|
||||||
|
|
||||||
/** Get pointer to sbi_platform for sbi_scratch pointer */
|
/** Get pointer to sbi_platform for sbi_scratch pointer */
|
||||||
#define sbi_platform_ptr(__s) \
|
#define sbi_platform_ptr(__s) \
|
||||||
((const struct sbi_platform *)((__s)->platform_addr))
|
((const struct sbi_platform *)((__s)->platform_addr))
|
||||||
|
Reference in New Issue
Block a user