diff --git a/include/sbi/sbi_scratch.h b/include/sbi/sbi_scratch.h index 0d188d12..1ec1710e 100644 --- a/include/sbi/sbi_scratch.h +++ b/include/sbi/sbi_scratch.h @@ -226,7 +226,7 @@ extern u32 hartindex_to_hartid_table[]; /** Get sbi_scratch from HART index */ #define sbi_hartindex_to_hartid(__hartindex) \ ({ \ - ((__hartindex) <= sbi_scratch_last_hartindex()) ?\ + ((__hartindex) < SBI_HARTMASK_MAX_BITS) ? \ hartindex_to_hartid_table[__hartindex] : -1U; \ }) @@ -236,8 +236,8 @@ extern struct sbi_scratch *hartindex_to_scratch_table[]; /** Get sbi_scratch from HART index */ #define sbi_hartindex_to_scratch(__hartindex) \ ({ \ - ((__hartindex) <= sbi_scratch_last_hartindex()) ?\ - hartindex_to_scratch_table[__hartindex] : NULL;\ + ((__hartindex) < SBI_HARTMASK_MAX_BITS) ? \ + hartindex_to_scratch_table[__hartindex] : NULL; \ }) /** diff --git a/lib/sbi/sbi_scratch.c b/lib/sbi/sbi_scratch.c index 5a9e935b..e1cc5658 100644 --- a/lib/sbi/sbi_scratch.c +++ b/lib/sbi/sbi_scratch.c @@ -15,8 +15,8 @@ #include u32 last_hartindex_having_scratch = 0; -u32 hartindex_to_hartid_table[SBI_HARTMASK_MAX_BITS] = { -1U }; -struct sbi_scratch *hartindex_to_scratch_table[SBI_HARTMASK_MAX_BITS] = { 0 }; +u32 hartindex_to_hartid_table[SBI_HARTMASK_MAX_BITS] = { [0 ... SBI_HARTMASK_MAX_BITS-1] = -1U }; +struct sbi_scratch *hartindex_to_scratch_table[SBI_HARTMASK_MAX_BITS]; static spinlock_t extra_lock = SPIN_LOCK_INITIALIZER; static unsigned long extra_offset = SBI_SCRATCH_EXTRA_SPACE_OFFSET;