lm3s1968: log an error and halt forever in case of unhandled IRQs.
authorarighi <arighi@38d2e660-2303-0410-9eaa-f027e97ec537>
Wed, 31 Mar 2010 14:41:55 +0000 (14:41 +0000)
committerarighi <arighi@38d2e660-2303-0410-9eaa-f027e97ec537>
Wed, 31 Mar 2010 14:41:55 +0000 (14:41 +0000)
git-svn-id: https://src.develer.com/svnoss/bertos/trunk@3356 38d2e660-2303-0410-9eaa-f027e97ec537

bertos/cpu/cortex-m3/drv/irq_lm3s.c

index c1df50193b9fd34e958b65a957204ec4f2df4e96..2ff83575fd699c2f8fb31e81e34149e8c297cb7a 100644 (file)
@@ -35,7 +35,8 @@
  * \author Andrea Righi <arighi@develer.com>
  */
 
-#include <cfg/debug.h>
+#include <cfg/debug.h> /* ASSERT() */
+#include <cfg/log.h> /* LOG_ERR() */
 #include <cpu/irq.h>
 #include "io/lm3s.h"
 #include "irq_lm3s.h"
 static void (*irq_table[NUM_INTERRUPTS])(void)
                        __attribute__((section("vtable")));
 
-static void unhandled_isr(void)
+/* Unhandled IRQ */
+static NORETURN NAKED void unhandled_isr(void)
 {
-       /* Unhandled IRQ */
+       reg32_t reg;
+
+       asm volatile ("mrs %0, ipsr" : "=r"(reg));
+       LOG_ERR("unhandled IRQ %lu\n", reg);
+       PAUSE;
+       UNREACHABLE();
        ASSERT(0);
 }