diff options
author | 2023-10-10 14:33:42 +0000 | |
---|---|---|
committer | 2023-10-10 14:33:42 +0000 | |
commit | af1a266670d040d2f4083ff309d732d648afba2a (patch) | |
tree | 2fc46203448ddcc6f81546d379abfaeb323575e9 /roms/u-boot/lib/panic.c | |
parent | e02cda008591317b1625707ff8e115a4841aa889 (diff) |
Change-Id: Iaf8d18082d3991dec7c0ebbea540f092188eb4ec
Diffstat (limited to 'roms/u-boot/lib/panic.c')
-rw-r--r-- | roms/u-boot/lib/panic.c | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/roms/u-boot/lib/panic.c b/roms/u-boot/lib/panic.c new file mode 100644 index 000000000..58382ac4f --- /dev/null +++ b/roms/u-boot/lib/panic.c @@ -0,0 +1,57 @@ +/* + * linux/lib/vsprintf.c + * + * Copyright (C) 1991, 1992 Linus Torvalds + */ + +/* vsprintf.c -- Lars Wirzenius & Linus Torvalds. */ +/* + * Wirzenius wrote this portably, Torvalds fucked it up :-) + */ + +#include <common.h> +#include <hang.h> +#if !defined(CONFIG_PANIC_HANG) +#include <command.h> +#endif +#include <linux/delay.h> + +static void panic_finish(void) __attribute__ ((noreturn)); + +static void panic_finish(void) +{ + putc('\n'); +#if defined(CONFIG_PANIC_HANG) + hang(); +#else + udelay(100000); /* allow messages to go out */ + do_reset(NULL, 0, 0, NULL); +#endif + while (1) + ; +} + +void panic_str(const char *str) +{ + puts(str); + panic_finish(); +} + +void panic(const char *fmt, ...) +{ +#if CONFIG_IS_ENABLED(PRINTF) + va_list args; + va_start(args, fmt); + vprintf(fmt, args); + va_end(args); +#endif + panic_finish(); +} + +void __assert_fail(const char *assertion, const char *file, unsigned int line, + const char *function) +{ + /* This will not return */ + panic("%s:%u: %s: Assertion `%s' failed.", file, line, function, + assertion); +} |