44 lines
809 B
C
44 lines
809 B
C
#pragma once
|
|
|
|
#define FAULT_REASON_HARD_FAULT 1
|
|
#define FAULT_REASON_MEMMANAGE_FAULT 2
|
|
#define FAULT_REASON_BUS_FAULT 3
|
|
#define FAULT_REASON_USAGE_FAULT 4
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef struct
|
|
{
|
|
uint32_t R0;
|
|
uint32_t R1;
|
|
uint32_t R2;
|
|
uint32_t R3;
|
|
uint32_t R4;
|
|
uint32_t R5;
|
|
uint32_t R6;
|
|
uint32_t R7;
|
|
uint32_t R8;
|
|
uint32_t R9;
|
|
uint32_t R10;
|
|
uint32_t R11;
|
|
uint32_t R12;
|
|
uint32_t SP;
|
|
uint32_t LR;
|
|
uint32_t PC;
|
|
uint32_t xPSR;
|
|
uint32_t PSP;
|
|
uint32_t MSP;
|
|
uint32_t EXC_RETURN;
|
|
uint32_t CONTROL;
|
|
} fault_context_t;
|
|
|
|
extern fault_context_t g_fault_context;
|
|
|
|
void app_fault_callback(uint32_t reason);
|
|
__attribute__((noreturn)) void fault_handler(uint32_t type, fault_context_t *context);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|