summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXiang W <[email protected]>2023-08-21 22:11:45 +0800
committerAnup Patel <[email protected]>2023-09-06 17:06:12 +0530
commitb20bd479eff1588bfea52cceda213c40cc273ba9 (patch)
tree1472cc1eb79f7d1eec77575eab1ac7af40f543c1
parenta9cffd65324caf5512e3ebb5b08d5b85efd0a23c (diff)
lib: sbi: improve the definition of SBI_IPI_EVENT_MAX
The previous definition had the assumption that the machine word length is equal to the word length of LONG. Remove this assumption and add a static check to prevent errors in subsequent modifications. Signed-off-by: Xiang W <[email protected]> Reviewed-by: Anup Patel <[email protected]>
-rw-r--r--include/sbi/sbi_ipi.h2
-rw-r--r--lib/sbi/sbi_ipi.c5
2 files changed, 6 insertions, 1 deletions
diff --git a/include/sbi/sbi_ipi.h b/include/sbi/sbi_ipi.h
index c64f422c..6b5e260b 100644
--- a/include/sbi/sbi_ipi.h
+++ b/include/sbi/sbi_ipi.h
@@ -14,7 +14,7 @@
/* clang-format off */
-#define SBI_IPI_EVENT_MAX __riscv_xlen
+#define SBI_IPI_EVENT_MAX (8 * __SIZEOF_LONG__)
/* clang-format on */
diff --git a/lib/sbi/sbi_ipi.c b/lib/sbi/sbi_ipi.c
index ad091545..0d8edab0 100644
--- a/lib/sbi/sbi_ipi.c
+++ b/lib/sbi/sbi_ipi.c
@@ -27,6 +27,11 @@ struct sbi_ipi_data {
unsigned long ipi_type;
};
+_Static_assert(
+ 8 * sizeof(((struct sbi_ipi_data*)0)->ipi_type) == SBI_IPI_EVENT_MAX,
+ "type of sbi_ipi_data.ipi_type has changed, please redefine SBI_IPI_EVENT_MAX"
+ );
+
static unsigned long ipi_data_off;
static const struct sbi_ipi_device *ipi_dev = NULL;
static const struct sbi_ipi_event_ops *ipi_ops_array[SBI_IPI_EVENT_MAX];