mirror of
https://github.com/riscv-software-src/opensbi.git
synced 2025-08-25 07:41:42 +01:00
lib: sbi: add some macros to detect BUG at runtime
Three macros are added. One is called BUG, which is used to put in an unreachable branch. One is called BUG_ON, which is used to check bugs and assert conditions are opposite. One is called SBI_ASSERT, used for assertion checking. Signed-off-by: Xiang W <wxjstz@126.com> Reviewed-by: Anup Patel <anup.patel@wdc.com>
This commit is contained in:
@@ -11,6 +11,7 @@
|
|||||||
#define __SBI_CONSOLE_H__
|
#define __SBI_CONSOLE_H__
|
||||||
|
|
||||||
#include <sbi/sbi_types.h>
|
#include <sbi/sbi_types.h>
|
||||||
|
#include <sbi/sbi_hart.h>
|
||||||
|
|
||||||
struct sbi_console_device {
|
struct sbi_console_device {
|
||||||
/** Name of the console device */
|
/** Name of the console device */
|
||||||
@@ -51,4 +52,23 @@ struct sbi_scratch;
|
|||||||
|
|
||||||
int sbi_console_init(struct sbi_scratch *scratch);
|
int sbi_console_init(struct sbi_scratch *scratch);
|
||||||
|
|
||||||
|
#define BUG() do { \
|
||||||
|
sbi_printf("BUG: failure at %s:%d/%s()!\n", \
|
||||||
|
__FILE__, __LINE__, __func__); \
|
||||||
|
sbi_hart_hang(); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define BUG_ON(cond) do { \
|
||||||
|
if (cond) \
|
||||||
|
BUG(); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define SBI_ASSERT(cond) do { \
|
||||||
|
if (!(cond)) { \
|
||||||
|
sbi_printf("ASSERT: %s:%d/%s(): Assertion `%s` failed.\n", \
|
||||||
|
__FILE__,__LINE__,__func__, #cond);\
|
||||||
|
sbi_hart_hang(); \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user