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 Simonsstatic 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 Simonsvoid 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 Simonsvoid 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