45 stacked_r0 = hardfault_args[0];
46 stacked_r1 = hardfault_args[1];
47 stacked_r2 = hardfault_args[2];
48 stacked_r3 = hardfault_args[3];
50 stacked_r12 = hardfault_args[4];
51 stacked_lr = hardfault_args[5];
52 stacked_pc = hardfault_args[6];
53 stacked_psr = hardfault_args[7];
55 rBFAR = (*((
volatile uint32_t *)(0xE000ED38)));
56 rCFSR = (*((
volatile uint32_t *)(0xE000ED28)));
57 rHFSR = (*((
volatile uint32_t *)(0xE000ED2C)));
58 rDFSR = (*((
volatile uint32_t *)(0xE000ED30)));
59 rAFSR = (*((
volatile uint32_t *)(0xE000ED3C)));
60 rMMAR = (*((
volatile uint32_t *)(0xE000ED34)));
62 printf(
"[Hard fault handler]\n");
63 printf(
"R0 = %x\n", (
unsigned int)stacked_r0);
64 printf(
"R1 = %x\n", (
unsigned int)stacked_r1);
65 printf(
"R2 = %x\n", (
unsigned int)stacked_r2);
66 printf(
"R3 = %x\n", (
unsigned int)stacked_r3);
67 printf(
"R12 = %x\n", (
unsigned int)stacked_r12);
68 printf(
"LR = %x\n", (
unsigned int)stacked_lr);
69 printf(
"PC = %x\n", (
unsigned int)stacked_pc);
70 printf(
"PSR = %x\n", (
unsigned int)stacked_psr);
71 printf(
"BFAR = %x\n", (
unsigned int)rBFAR);
72 printf(
"CFSR = %x\n", (
unsigned int)rCFSR);
73 printf(
"HFSR = %x\n", (
unsigned int)rHFSR);
74 printf(
"DFSR = %x\n", (
unsigned int)rDFSR);
75 printf(
"AFSR = %x\n", (
unsigned int)rAFSR);
76 printf(
"MMAR = %x\n", (
unsigned int)rMMAR);
void hard_fault_handler_c(uint32_t *hardfault_args)
Hard fault handler (C part)
K60 hardware register header wrapper.
#define DEBUGGER_BREAK(sig)
Make the CPU signal to the debugger and break execution by issuing a bkpt instruction.