xref: /rk3399_rockchip-uboot/lib/panic.c (revision 35065cdd94a41dee4882b921f9763742e44d1c58)
1*2b22a99cSSjoerd Simons /*
2*2b22a99cSSjoerd Simons  *  linux/lib/vsprintf.c
3*2b22a99cSSjoerd Simons  *
4*2b22a99cSSjoerd Simons  *  Copyright (C) 1991, 1992  Linus Torvalds
5*2b22a99cSSjoerd Simons  */
6*2b22a99cSSjoerd Simons 
7*2b22a99cSSjoerd Simons /* vsprintf.c -- Lars Wirzenius & Linus Torvalds. */
8*2b22a99cSSjoerd Simons /*
9*2b22a99cSSjoerd Simons  * Wirzenius wrote this portably, Torvalds fucked it up :-)
10*2b22a99cSSjoerd Simons  */
11*2b22a99cSSjoerd Simons 
12*2b22a99cSSjoerd Simons #include <common.h>
13*2b22a99cSSjoerd Simons #if !defined(CONFIG_PANIC_HANG)
14*2b22a99cSSjoerd Simons #include <command.h>
15*2b22a99cSSjoerd Simons #endif
16*2b22a99cSSjoerd Simons 
17*2b22a99cSSjoerd Simons static void panic_finish(void) __attribute__ ((noreturn));
18*2b22a99cSSjoerd Simons 
panic_finish(void)19*2b22a99cSSjoerd Simons static void panic_finish(void)
20*2b22a99cSSjoerd Simons {
21*2b22a99cSSjoerd Simons 	putc('\n');
22*2b22a99cSSjoerd Simons #if defined(CONFIG_PANIC_HANG)
23*2b22a99cSSjoerd Simons 	hang();
24*2b22a99cSSjoerd Simons #else
25*2b22a99cSSjoerd Simons 	udelay(100000);	/* allow messages to go out */
26*2b22a99cSSjoerd Simons 	do_reset(NULL, 0, 0, NULL);
27*2b22a99cSSjoerd Simons #endif
28*2b22a99cSSjoerd Simons 	while (1)
29*2b22a99cSSjoerd Simons 		;
30*2b22a99cSSjoerd Simons }
31*2b22a99cSSjoerd Simons 
panic_str(const char * str)32*2b22a99cSSjoerd Simons void panic_str(const char *str)
33*2b22a99cSSjoerd Simons {
34*2b22a99cSSjoerd Simons 	puts(str);
35*2b22a99cSSjoerd Simons 	panic_finish();
36*2b22a99cSSjoerd Simons }
37*2b22a99cSSjoerd Simons 
panic(const char * fmt,...)38*2b22a99cSSjoerd Simons void panic(const char *fmt, ...)
39*2b22a99cSSjoerd Simons {
40*2b22a99cSSjoerd Simons 	va_list args;
41*2b22a99cSSjoerd Simons 	va_start(args, fmt);
42*2b22a99cSSjoerd Simons 	vprintf(fmt, args);
43*2b22a99cSSjoerd Simons 	va_end(args);
44*2b22a99cSSjoerd Simons 	panic_finish();
45*2b22a99cSSjoerd Simons }
46