#include #include #include #include #include void init_exception() { asm volatile( "adr x0, exception_vector_table" ENDL "msr vbar_el1, x0" ENDL ::: "x0" ); } void not_implemented_handler() { DEBUG_EXCEP("not implemented caught"); } void synchronous_handler() { static int poop = 0; if (poop++ > 10) exit(ERR_ADMINKILL); DEBUG_EXCEP("synchronous caught"); uint64_t x0 = 0x0; R_REG(x0, x0); uint64_t spsr_el1 = 0x0; R_SYSREG(spsr_el1, spsr_el1); uint64_t elr_el1 = 0x0; R_SYSREG(elr_el1, elr_el1); uint64_t esr_el1 = 0x0; R_SYSREG(esr_el1, esr_el1); LOG(x0); LOG(spsr_el1); LOG(elr_el1); DEBUG_EXCEP(esr_el1); }