1 // SPDX-License-Identifier: GPL-2.0 2 /* 3 * Callers outside of misc.c need access to the error reporting routines, 4 * but the *_putstr() functions need to stay in misc.c because of how 5 * memcpy() and memmove() are defined for the compressed boot environment. 6 */ 7 #include "misc.h" 8 #include "error.h" 9 10 void warn(const char *m) 11 { 12 error_putstr("\n\n"); 13 error_putstr(m); 14 error_putstr("\n\n"); 15 } 16 17 void error(char *m) 18 { 19 warn(m); 20 error_putstr(" -- System halted"); 21 22 while (1) 23 asm("hlt"); 24 } 25 26 /* EFI libstub provides vsnprintf() */ 27 #ifdef CONFIG_EFI_STUB 28 void panic(const char *fmt, ...) 29 { 30 static char buf[1024]; 31 va_list args; 32 int len; 33 34 va_start(args, fmt); 35 len = vsnprintf(buf, sizeof(buf), fmt, args); 36 va_end(args); 37 38 if (len && buf[len - 1] == '\n') 39 buf[len - 1] = '\0'; 40 41 error(buf); 42 } 43 #endif 44