aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTravis Geiselbrecht <geist@foobox.com>2013-07-19 19:20:16 -0700
committerTravis Geiselbrecht <geist@foobox.com>2013-07-19 19:20:16 -0700
commit71d36e61184b2ce24ce6ec699c16a2d770612f62 (patch)
tree9117f04124228a9f2aee9ba833e9710fcede62b6
parent5cba55e27d5ed970ad007dad7ca13f8a249881de (diff)
downloadlk-upstream-master-backup.tar.gz
[arch][arm-m] properly bump the critical section count before fatal exceptionsupstream-master-backup
-rw-r--r--arch/arm/arm-m/exceptions.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/arm/arm-m/exceptions.c b/arch/arm/arm-m/exceptions.c
index b8a8d44b..b8c19644 100644
--- a/arch/arm/arm-m/exceptions.c
+++ b/arch/arm/arm-m/exceptions.c
@@ -23,6 +23,7 @@
#include <debug.h>
#include <compiler.h>
#include <stdint.h>
+#include <kernel/thread.h>
#include <arch/arm/cm.h>
static void dump_frame(const struct arm_cm_exception_frame *frame)
@@ -40,6 +41,7 @@ static void dump_frame(const struct arm_cm_exception_frame *frame)
static void hardfault(struct arm_cm_exception_frame *frame)
{
+ inc_critical_section();
printf("hardfault: ");
dump_frame(frame);
@@ -50,6 +52,7 @@ static void hardfault(struct arm_cm_exception_frame *frame)
static void usagefault(struct arm_cm_exception_frame *frame)
{
+ inc_critical_section();
printf("usagefault: ");
dump_frame(frame);
@@ -58,6 +61,7 @@ static void usagefault(struct arm_cm_exception_frame *frame)
static void busfault(struct arm_cm_exception_frame *frame)
{
+ inc_critical_section();
printf("busfault: ");
dump_frame(frame);
@@ -68,6 +72,7 @@ static void busfault(struct arm_cm_exception_frame *frame)
void _nmi(void)
{
+ inc_critical_section();
printf("nmi\n");
halt();
}
@@ -85,6 +90,7 @@ __NAKED void _hardfault(void)
void _memmanage(void)
{
+ inc_critical_section();
printf("memmanage\n");
halt();
}
@@ -114,6 +120,7 @@ void _usagefault(void)
/* systick handler */
void __WEAK _systick(void)
{
+ inc_critical_section();
printf("systick\n");
halt();
}