From 3436a100397baf44de528b174ab7ac79d36e11ba Mon Sep 17 00:00:00 2001
From: Hauke Petersen <hauke.petersen@fu-berlin.de>
Date: Fri, 13 Mar 2015 17:39:45 +0100
Subject: [PATCH] cpu/stm32f0: included core_panic module

---
 cpu/stm32f0/include/cpu-conf.h |  9 +++++++++
 cpu/stm32f0/startup.c          | 34 +++++-----------------------------
 2 files changed, 14 insertions(+), 29 deletions(-)

diff --git a/cpu/stm32f0/include/cpu-conf.h b/cpu/stm32f0/include/cpu-conf.h
index a0d7a4cde1..57ee512fe2 100644
--- a/cpu/stm32f0/include/cpu-conf.h
+++ b/cpu/stm32f0/include/cpu-conf.h
@@ -63,6 +63,15 @@ extern "C" {
  */
 #define CPUID_ID_LEN                    (12)
 
+/**
+ * @brief Definition of different panic modes
+ */
+typedef enum {
+    HARD_FAULT,             /**< hard fault */
+    NMI_HANDLER,            /**< non maskable interrupt */
+    DUMMY_HANDLER           /**< dummy interrupt handler */
+} panic_t;
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/cpu/stm32f0/startup.c b/cpu/stm32f0/startup.c
index d1fa47bf92..ebc44aa954 100644
--- a/cpu/stm32f0/startup.c
+++ b/cpu/stm32f0/startup.c
@@ -19,7 +19,8 @@
  */
 
 #include <stdint.h>
-#include "board.h"
+
+#include "crash.h"
 
 /**
  * memory markers as defined in the linker script
@@ -79,42 +80,17 @@ void reset_handler(void)
  */
 void dummy_handler(void)
 {
-    while (1) {asm ("nop");}
+    core_panic(DUMMY_HANDLER, "DUMMY HANDLER");
 }
 
 void isr_nmi(void)
 {
-    while (1) {asm ("nop");}
-}
-
-void isr_mem_manage(void)
-{
-    while (1) {asm ("nop");}
-}
-
-void isr_debug_mon(void)
-{
-    while (1) {asm ("nop");}
+    core_panic(NMI_HANDLER, "NMI HANDLER");
 }
 
 void isr_hard_fault(void)
 {
-    while (1) {
-        for (int i = 0; i < 250000; i++) {
-            asm ("nop");
-        }
-        LED_RED_TOGGLE;
-    }
-}
-
-void isr_bus_fault(void)
-{
-    while (1) {asm ("nop");}
-}
-
-void isr_usage_fault(void)
-{
-    while (1) {asm ("nop");}
+    core_panic(HARD_FAULT, "HARD FAULT");
 }
 
 /* Cortex-M specific interrupt vectors */
-- 
GitLab