#include "io.h" #include "svc_interface.h" void setup(void); void reset_handler(void) { static _Bool setup_done; if (!setup_done) setup(); setup_done = 1; // TODO do something here while(1); } void undefined_instruction_vector(void) { puts("Undefined instruction occured"); while( 1 ) { /* Do Nothing! */ } } uint32_t supervisor_call_handler(enum svc_type request, uint32_t arg1, uint32_t arg2, uint32_t arg3) { (void) arg2; (void) arg3; // unused for now switch(request) { case UART_PUTCHAR: putchar(arg1); break; case UART_GETCHAR: return getchar(); case UART_WRITE: puts("UART_WRITE not implemented!!!!!"); break; default: // perhaps we should kill the process now? puts("unknown supervisor call type!!!!!"); } return 0; // a dummy value } void abort_handler(void) { puts("re-entered system"); while(1); } void generic_handler(void) { puts("something weird happened"); while(1); } void irq_handler(void) { puts("irq happened"); while(1); } void fiq_handler(void) { puts("fiq happened"); while(1); }