static void __attribute__((used)) dump_ctx(unsigned int *ctx) { static char *regs[] = { "R0", "R1", "R2", "R3", "R12", "LR", "PC", "PSR" }; static char *exc[] = { 0, 0, "NMI", "HARD FAULT", "MEMORY MANAGEMENT", "BUS FAULT", "USAGE FAULT", "RESERVED", "RESERVED", "RESERVED", "RESERVED", "SVCALL", "DEBUG MONITOR", "RESERVED", "PENDSV", "SYSTICK", }; unsigned char vec = cortex_m3_irq_vec_get(); int i; printf("UNHANDLED EXCEPTION: "); if (vec < 16) { printf("%s\n", exc[vec]); } else { printf("INTISR[%d]\n", vec - 16); } for (i = 0; i < 8; i++) { printf(" %s\t= %08x", regs[i], ctx[i]); if (((i + 1) % 2) == 0) { printf("\n"); } } /* printf(" IRQ from DDR memory \n"); printf("ddr->ddrc.MODE_CR = 0x%x\n", *g_m2s_ddrc_0_config[0].p_reg); printf("ddr->ddrc.SINGLE_ERR_CNT_STATUS_SR = 0x%x\n", *g_m2s_ddrc_0_config[1].p_reg); printf("ddr->ddrc.DOUBLE_ERR_CNT_STATUS_SR = 0x%x\n", *g_m2s_ddrc_0_config[2].p_reg); printf("ddr->ddrc.ECC_INT_SR = 0x%x\n", *g_m2s_ddrc_0_config[3].p_reg); */ }
/* * Dump the registers on an exception we don't know how to process. */ static void __attribute__((used)) dump_ctx(unsigned int *ctx) { static char *regs[] = { "R0", "R1", "R2", "R3", "R12", "LR", "PC", "PSR" }; static char *exc[] = { 0, 0, "NMI", "HARD FAULT", "MEMORY MANAGEMENT", "BUS FAULT", "USAGE FAULT", "RESERVED", "RESERVED", "RESERVED", "RESERVED", "SVCALL", "DEBUG MONITOR", "RESERVED", "PENDSV", "SYSTICK", }; unsigned char vec = cortex_m3_irq_vec_get(); int i; printf("UNHANDLED EXCEPTION: "); if (vec < 16) { printf("%s\n", exc[vec]); } else { printf("INTISR[%d]\n", vec - 16); } for (i = 0; i < 8; i++) { printf(" %s\t= %08x", regs[i], ctx[i]); if (((i + 1) % 2) == 0) { printf("\n"); } } }