#include "panic.h" #include "lib/printf.h" int _kernel_panic_unlock = 0; void __panic_reason(const char *fmt, va_list ap) { _kernel_panic_unlock = 1; kvprintf(fmt, ap); } void __panic_end(void) { hcf(); } void kpanic(const char *fmt, ...) { va_list ap; va_start(ap, fmt); __panic_reason(fmt, ap); __panic_stack_trace(__panic_get_bp()); __panic_end(); } void kpanic_istate(void *state, const char *fmt, ...) { va_list ap; va_start(ap, fmt); __panic_reason(fmt, ap); __panic_stack_trace(__panic_print_istate(state)); __panic_end(); }