lindows/lcrash/debug/debug.c
2024-04-22 07:58:33 -04:00

37 lines
747 B
C

#include <lcrash/debug/debug.h>
#include <lcrash/gdb/gdb.h>
#include <lcrash/mm/kmalloc.h>
struct DebugExtendedDebugInformationBlock {
/// Kernel panic
bool Panic;
/// Kernel panic error
const c8* PanicError;
};
struct DebugExtendedDebugInformationBlock* DebugEDIB = 0;
struct GdbDataBlock* DebugGDB = (struct GdbDataBlock*)0x100000;
int DebugInitialize() {
DebugEDIB = KernelHeapAlloc(sizeof(struct DebugExtendedDebugInformationBlock), 1, 0);
if (DebugEDIB == 0) return -1;
DebugGDB->EDIB = DebugEDIB;
DebugEDIB->Panic = false;
DebugEDIB->PanicError = 0;
return 0;
}
[[noreturn]]
void Panic(const c8* Error) {
DebugEDIB->PanicError = Error;
DebugEDIB->Panic = true;
DebugGDB->Update++;
asm("cli");
while (1) asm("hlt");
}