IndigoOS/src/include/panic.h
2021-08-24 14:09:29 -05:00

60 lines
1.8 KiB
C

#ifndef PANIC_INCLUDED
#define PANIC_INCLUDED
#include <stdint.h>
#define EASTEREGG_BLOATWARE
//TODO this needs to be moved once we find somehwere better
struct stack_frame {
struct stack_frame *next; //rbp
void *function_base; //rip
} __attribute__((packed));
struct registers {
uint64_t rax, rbx, rcx, rdx, rsi, rdi;
} __attribute__((packed));
void panic(int reason, void *frame_p, struct registers *regs);
#define PANIC(reason) panic(reason, 0, 0)
//hardware exceptions/faults
//kernel panic reasons 0-31 reserved for these
//later on, we can make an ugly function to find our vector.
//I did a lot of work assuming it was pushed onto the stack,
//so if I choose not to impliment that these defs will be deleted.
/**
#define KERNEL_PANIC_HWE_DE 0
#define KERNEL_PANIC_HWE_BR 5
#define KERNEL_PANIC_HWE_UD 6
#define KERNEL_PANIC_HWE_NM 7
#define KERNEL_PANIC_HWE_DF 8
#define KERNEL_PANIC_HWE_TS 10
#define KERNEL_PANIC_HWE_NP 11
#define KERNEL_PANIC_HWE_SS 12
#define KERNEL_PANIC_HWE_GP 13
#define KERNEL_PANIC_HWE_PF 14
#define KERNEL_PANIC_HWE_MF 16
#define KERNEL_PANIC_HWE_AC 17
#define KERNEL_PANIC_HWE_MC 18
#define KERNEL_PANIC_HWE_XM 19
#define KERNEL_PANIC_HWE_VE 20
#define KERNEL_PANIC_HWE_SE 30
**/
#define KERNEL_PANIC_HW_EXCEPTION 0
#define KERNEL_PANIC_HW_EXCEPTION_ERR 1 //exception with error code
//kernel generated exceptions
#define KERNEL_PANIC_RSDP_UNFOUND 32
#define KERNEL_PANIC_KERNEL_RETURNED 33
#define KERNEL_PANIC_INVALID_PFREE 34
#define KERNEL_PANIC_INVALID_RSDT 35
#define KERNEL_PANIC_INVALID_IOAPIC_VEC 36
#define KERNEL_PANIC_HPET_REQUIRED 37
#endif