summaryrefslogtreecommitdiff
path: root/kernel/src/check/panic.c
blob: 60084b4d439197f44aa013ffe59b957225a9b6b6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <libk/stdio.h>
#include <panic.h>
#include <regs.h>
#include <graphics.h>
#include <idt.h>

__attribute__((noreturn)) void panic(uint64_t rsp, const char *s, ...)
{
	va_list list;

	set_color(&main_fb, RED, BLACK);
	printf("KERNEL PANIC\n");
	/*	set_color(&main_fb, WHITE, BLACK); */
	va_start(list, s);
	vprintf(s, list);
	va_end(list);

	if (rsp) {
		print_regs_from_rsp(rsp);
	}

	disable_interrupts();
	for (;;) {
		__asm__ __volatile__("hlt;");
	}
}