Index: firmware/source/sys_selftest.c =================================================================== diff -u -reff7b1575f008f81b29ef906f6346fac6012d3ab -r95d98e7e4e77680481e2d5d28956fc24a185a8a3 --- firmware/source/sys_selftest.c (.../sys_selftest.c) (revision eff7b1575f008f81b29ef906f6346fac6012d3ab) +++ firmware/source/sys_selftest.c (.../sys_selftest.c) (revision 95d98e7e4e77680481e2d5d28956fc24a185a8a3) @@ -43,6 +43,9 @@ /* USER CODE BEGIN (0) */ +#include "Common.h" +#include "HDDefs.h" +#include "SystemCommMessages.h" /* USER CODE END */ #include "sys_selftest.h" @@ -1119,6 +1122,10 @@ * This data abort is not caused due to diagnostic checks of flash and TCRAM ECC logic. */ /* USER CODE BEGIN (42) */ + uint32_t marker = STACK_MARKER; + uint32_t contentOfLinkRegister = *(volatile uint32_t*)( &marker + LR_OFFSET_WORD_IN_STACK ); + *(volatile uint32_t*)( &marker + LR_OFFSET_WORD_IN_STACK ) = contentOfLinkRegister + LR_OFFSET_ADJUSTMENT; + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, (U32)SW_FAULT_ID_ILLEGAL_MEM_ACCESS, contentOfLinkRegister ) // log LR to determine what caused violation /* USER CODE END */ }