43#include "dev/watchdog.h"
49#define LOG_MODULE "SecureFault"
50#define LOG_LEVEL LOG_LEVEL_INFO
53#define FAULT_MAGIC 0x12345678
59__attribute__((section(
".noinit"))) volatile struct fault_info fault_info;
62print_sfsr(uint32_t sfsr)
64 if(sfsr & SAU_SFSR_LSERR_Msk) {
67 if(sfsr & SAU_SFSR_SFARVALID_Msk) {
68 LOG_WARN_(
" SFARVALID");
70 if(sfsr & SAU_SFSR_LSPERR_Msk) {
73 if(sfsr & SAU_SFSR_INVTRAN_Msk) {
74 LOG_WARN_(
" INVTRAN");
76 if(sfsr & SAU_SFSR_AUVIOL_Msk) {
79 if(sfsr & SAU_SFSR_INVER_Msk) {
82 if(sfsr & SAU_SFSR_INVIS_Msk) {
85 if(sfsr & SAU_SFSR_INVEP_Msk) {
91SecureFault_Handler(
void)
93 fault_info.magic = FAULT_MAGIC;
94 fault_info.sfar = SAU->SFAR;
95 fault_info.sfsr = SAU->SFSR;
102 if(fault_info.magic == FAULT_MAGIC) {
103 fault_info.magic = 0;
105 LOG_WARN(
"Reboot caused by Secure Fault! Address 0x%"PRIx32
106 ", SFSR 0x%"PRIx32
"\n",
107 fault_info.sfar, fault_info.sfsr);
108 LOG_WARN(
"Secure Fault status:");
109 print_sfsr(fault_info.sfsr);
Header file for the logging system.