db41d65a97
At present panic() is in the vsprintf.h header file. That does not seem like an obvious choice for hang(), even though it relates to panic(). So let's put hang() in its own header. Signed-off-by: Simon Glass <sjg@chromium.org> [trini: Migrate a few more files] Signed-off-by: Tom Rini <trini@konsulko.com>
57 lines
1009 B
C
57 lines
1009 B
C
/*
|
|
* 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
|
|
|
|
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);
|
|
}
|