diff --git a/lib/card10/faultscreen.c b/lib/card10/faultscreen.c index 2d20c29eb1170213678d02765e856c72318a7edd..1e6c9393057b6a9f8443c5222b126f45339d74bb 100644 --- a/lib/card10/faultscreen.c +++ b/lib/card10/faultscreen.c @@ -12,33 +12,39 @@ #include "core1.h" struct regs_t { - unsigned int pc; - unsigned int sp; - unsigned int lr; + unsigned int pc; + unsigned int sp; + unsigned int lr; } static regs; -#define LOAD_REGS() \ - __asm__ __volatile__( \ - "ldr %0, [sp, #24] \n" \ - "ldr %1, [sp, #20] \n" \ - "mov %2, sp \n" \ - : "=r" (regs.pc), \ - "=r" (regs.lr), \ - "=r" (regs.sp) \ - ) - -static void generic_handler(const char *reason) { - char lines[3][64]; - - Core1_Stop(); - __disable_irq(); - - snprintf(lines[0], sizeof(lines[0]), "pc: 0x%08x", regs.pc); - snprintf(lines[1], sizeof(lines[1]), "sp: 0x%08x", regs.sp); - snprintf(lines[2], sizeof(lines[2]), "lr: 0x%08x", regs.lr); - - gfx_copy_region(&display_screen, 0, 0, 160, 80, GFX_RLE_MONO, - faultsplash_rle_len, faultsplash_rle); +#define LOAD_REGS() \ + __asm__ __volatile__( \ + "ldr %0, [sp, #24] \n" \ + "ldr %1, [sp, #20] \n" \ + "mov %2, sp \n" \ + : "=r"(regs.pc), "=r"(regs.lr), "=r"(regs.sp)) + +static void generic_handler(const char *reason) +{ + char lines[3][64]; + + Core1_Stop(); + __disable_irq(); + + snprintf(lines[0], sizeof(lines[0]), "pc: 0x%08x", regs.pc); + snprintf(lines[1], sizeof(lines[1]), "sp: 0x%08x", regs.sp); + snprintf(lines[2], sizeof(lines[2]), "lr: 0x%08x", regs.lr); + + gfx_copy_region( + &display_screen, + 0, + 0, + 160, + 80, + GFX_RLE_MONO, + faultsplash_rle_len, + faultsplash_rle + ); Color black = gfx_color(&display_screen, BLACK); Color white = gfx_color(&display_screen, WHITE); @@ -50,35 +56,41 @@ static void generic_handler(const char *reason) { gfx_update(&display_screen); } -static void NMI_Handler_(void) { - LOAD_REGS(); - generic_handler("NMI Fault"); +static void NMI_Handler_(void) +{ + LOAD_REGS(); + generic_handler("NMI Fault"); } -static void HardFault_Handler_(void) { - LOAD_REGS(); - generic_handler("HardFault"); +static void HardFault_Handler_(void) +{ + LOAD_REGS(); + generic_handler("HardFault"); } -static void MemManage_Handler_(void) { - LOAD_REGS(); - generic_handler("MemMgmtFault"); +static void MemManage_Handler_(void) +{ + LOAD_REGS(); + generic_handler("MemMgmtFault"); } -static void BusFault_Handler_(void) { - LOAD_REGS(); - generic_handler("BusFault"); +static void BusFault_Handler_(void) +{ + LOAD_REGS(); + generic_handler("BusFault"); } -static void UsageFault_Handler_(void) { - LOAD_REGS(); - generic_handler("UsageFault"); +static void UsageFault_Handler_(void) +{ + LOAD_REGS(); + generic_handler("UsageFault"); } -void card10_set_fault_handlers(void) { - NVIC_SetVector(NonMaskableInt_IRQn, NMI_Handler_); - NVIC_SetVector(HardFault_IRQn, HardFault_Handler_); - NVIC_SetVector(MemoryManagement_IRQn, MemManage_Handler_); - NVIC_SetVector(BusFault_IRQn, BusFault_Handler_); - NVIC_SetVector(UsageFault_IRQn, UsageFault_Handler_); +void card10_set_fault_handlers(void) +{ + NVIC_SetVector(NonMaskableInt_IRQn, NMI_Handler_); + NVIC_SetVector(HardFault_IRQn, HardFault_Handler_); + NVIC_SetVector(MemoryManagement_IRQn, MemManage_Handler_); + NVIC_SetVector(BusFault_IRQn, BusFault_Handler_); + NVIC_SetVector(UsageFault_IRQn, UsageFault_Handler_); } diff --git a/lib/card10/faultsplash.c b/lib/card10/faultsplash.c index f73b3ccbcb715eef8242b758ac923d9e8a2339dc..2b3e4fbed3532bebb00322bd3993ccb08ca9f3eb 100644 --- a/lib/card10/faultsplash.c +++ b/lib/card10/faultsplash.c @@ -1,34 +1,34 @@ #include "faultsplash.h" const unsigned char faultsplash_rle[] = { - 0x7f, 0x50, 0x83, 0x0f, 0x82, 0x7f, 0x0d, 0x83, 0x0f, 0x82, 0x7f, 0x1d, - 0x82, 0x7f, 0x1f, 0x82, 0x7f, 0x1f, 0x82, 0x7f, 0x12, 0x82, 0x09, 0x82, - 0x7f, 0x14, 0x82, 0x09, 0x82, 0x7f, 0x09, 0x82, 0x11, 0x83, 0x7f, 0x0b, - 0x82, 0x11, 0x83, 0x7f, 0x0f, 0x82, 0x07, 0x82, 0x7f, 0x16, 0x82, 0x07, - 0x82, 0x7f, 0x16, 0x82, 0x07, 0x82, 0x7f, 0x1a, 0x83, 0x7f, 0x1e, 0x83, - 0x7f, 0x0a, 0x8b, 0x17, 0x82, 0x02, 0x82, 0x02, 0x83, 0x73, 0x8c, 0x16, - 0x82, 0x02, 0x82, 0x02, 0x83, 0x72, 0x81, 0x0c, 0x84, 0x07, 0x85, 0x7f, - 0x03, 0x82, 0x0c, 0x84, 0x07, 0x86, 0x7f, 0x02, 0x82, 0x0c, 0x84, 0x07, - 0x86, 0x7f, 0x82, 0x12, 0x87, 0x7f, 0x06, 0x82, 0x12, 0x87, 0x7f, 0x06, - 0x82, 0x24, 0x82, 0x78, 0x82, 0x24, 0x82, 0x78, 0x82, 0x24, 0x82, 0x78, - 0x82, 0x16, 0x83, 0x04, 0x82, 0x07, 0x82, 0x76, 0x82, 0x16, 0x83, 0x04, - 0x82, 0x07, 0x82, 0x70, 0x8f, 0x0d, 0x82, 0x12, 0x82, 0x6e, 0x8f, 0x0d, - 0x82, 0x12, 0x82, 0x6e, 0x8f, 0x0b, 0x82, 0x09, 0x82, 0x0b, 0x82, 0x6c, - 0x8f, 0x0b, 0x82, 0x09, 0x82, 0x0b, 0x82, 0x6c, 0x8f, 0x0b, 0x82, 0x09, - 0x82, 0x0b, 0x82, 0x6c, 0x8f, 0x7f, 0x12, 0x8f, 0x7f, 0x0d, 0x98, 0x12, - 0x82, 0x74, 0x98, 0x12, 0x82, 0x70, 0xa1, 0x7f, 0xa1, 0x7f, 0xa1, 0x7f, - 0xa1, 0x7f, 0xa1, 0x7d, 0xa5, 0x7b, 0xa5, 0x7b, 0xa5, 0x7b, 0xa5, 0x7a, - 0xa6, 0x78, 0x89, 0x02, 0x9f, 0x76, 0x89, 0x02, 0x9f, 0x76, 0xaa, 0x76, - 0xaa, 0x76, 0x87, 0x02, 0xa1, 0x76, 0x87, 0x02, 0xa1, 0x76, 0x87, 0x02, - 0xa1, 0x76, 0x87, 0x02, 0xa1, 0x76, 0x87, 0x02, 0xa1, 0x76, 0x87, 0x02, - 0xa1, 0x76, 0x87, 0x02, 0xa1, 0x76, 0xaa, 0x76, 0xaa, 0x76, 0xaa, 0x76, - 0x89, 0x02, 0x9f, 0x76, 0x89, 0x02, 0x9f, 0x79, 0xa5, 0x7b, 0xa5, 0x7b, - 0xa5, 0x7b, 0x8b, 0x02, 0x98, 0x7b, 0x8b, 0x02, 0x98, 0x7d, 0xa1, 0x7f, - 0xa1, 0x7f, 0xa1, 0x7f, 0xa1, 0x7f, 0xa1, 0x7f, 0x04, 0x98, 0x7f, 0x09, - 0x98, 0x7f, 0x0e, 0x8f, 0x7f, 0x12, 0x8f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, - 0x7f, 0x06 + 0x7f, 0x50, 0x83, 0x0f, 0x82, 0x7f, 0x0d, 0x83, 0x0f, 0x82, 0x7f, 0x1d, + 0x82, 0x7f, 0x1f, 0x82, 0x7f, 0x1f, 0x82, 0x7f, 0x12, 0x82, 0x09, 0x82, + 0x7f, 0x14, 0x82, 0x09, 0x82, 0x7f, 0x09, 0x82, 0x11, 0x83, 0x7f, 0x0b, + 0x82, 0x11, 0x83, 0x7f, 0x0f, 0x82, 0x07, 0x82, 0x7f, 0x16, 0x82, 0x07, + 0x82, 0x7f, 0x16, 0x82, 0x07, 0x82, 0x7f, 0x1a, 0x83, 0x7f, 0x1e, 0x83, + 0x7f, 0x0a, 0x8b, 0x17, 0x82, 0x02, 0x82, 0x02, 0x83, 0x73, 0x8c, 0x16, + 0x82, 0x02, 0x82, 0x02, 0x83, 0x72, 0x81, 0x0c, 0x84, 0x07, 0x85, 0x7f, + 0x03, 0x82, 0x0c, 0x84, 0x07, 0x86, 0x7f, 0x02, 0x82, 0x0c, 0x84, 0x07, + 0x86, 0x7f, 0x82, 0x12, 0x87, 0x7f, 0x06, 0x82, 0x12, 0x87, 0x7f, 0x06, + 0x82, 0x24, 0x82, 0x78, 0x82, 0x24, 0x82, 0x78, 0x82, 0x24, 0x82, 0x78, + 0x82, 0x16, 0x83, 0x04, 0x82, 0x07, 0x82, 0x76, 0x82, 0x16, 0x83, 0x04, + 0x82, 0x07, 0x82, 0x70, 0x8f, 0x0d, 0x82, 0x12, 0x82, 0x6e, 0x8f, 0x0d, + 0x82, 0x12, 0x82, 0x6e, 0x8f, 0x0b, 0x82, 0x09, 0x82, 0x0b, 0x82, 0x6c, + 0x8f, 0x0b, 0x82, 0x09, 0x82, 0x0b, 0x82, 0x6c, 0x8f, 0x0b, 0x82, 0x09, + 0x82, 0x0b, 0x82, 0x6c, 0x8f, 0x7f, 0x12, 0x8f, 0x7f, 0x0d, 0x98, 0x12, + 0x82, 0x74, 0x98, 0x12, 0x82, 0x70, 0xa1, 0x7f, 0xa1, 0x7f, 0xa1, 0x7f, + 0xa1, 0x7f, 0xa1, 0x7d, 0xa5, 0x7b, 0xa5, 0x7b, 0xa5, 0x7b, 0xa5, 0x7a, + 0xa6, 0x78, 0x89, 0x02, 0x9f, 0x76, 0x89, 0x02, 0x9f, 0x76, 0xaa, 0x76, + 0xaa, 0x76, 0x87, 0x02, 0xa1, 0x76, 0x87, 0x02, 0xa1, 0x76, 0x87, 0x02, + 0xa1, 0x76, 0x87, 0x02, 0xa1, 0x76, 0x87, 0x02, 0xa1, 0x76, 0x87, 0x02, + 0xa1, 0x76, 0x87, 0x02, 0xa1, 0x76, 0xaa, 0x76, 0xaa, 0x76, 0xaa, 0x76, + 0x89, 0x02, 0x9f, 0x76, 0x89, 0x02, 0x9f, 0x79, 0xa5, 0x7b, 0xa5, 0x7b, + 0xa5, 0x7b, 0x8b, 0x02, 0x98, 0x7b, 0x8b, 0x02, 0x98, 0x7d, 0xa1, 0x7f, + 0xa1, 0x7f, 0xa1, 0x7f, 0xa1, 0x7f, 0xa1, 0x7f, 0x04, 0x98, 0x7f, 0x09, + 0x98, 0x7f, 0x0e, 0x8f, 0x7f, 0x12, 0x8f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, + 0x7f, 0x06 }; const size_t faultsplash_rle_len = 302; -const size_t faultsplash_width = 160; -const size_t faultsplash_height = 80; +const size_t faultsplash_width = 160; +const size_t faultsplash_height = 80;