aboutsummaryrefslogtreecommitdiff
path: root/cortex-m-rt
diff options
context:
space:
mode:
authorGravatar Jorge Aparicio <jorge@japaric.io> 2018-08-25 19:53:13 +0200
committerGravatar Jorge Aparicio <jorge@japaric.io> 2018-08-25 19:53:13 +0200
commit4c7169fa65f0c34c5461379e10f38f32c723507b (patch)
tree40335a6b6b7000f7135a8e1328c642771c33306a /cortex-m-rt
parent2557ac432eb3645671c093e3ace8787444180537 (diff)
downloadcortex-m-4c7169fa65f0c34c5461379e10f38f32c723507b.tar.gz
cortex-m-4c7169fa65f0c34c5461379e10f38f32c723507b.tar.zst
cortex-m-4c7169fa65f0c34c5461379e10f38f32c723507b.zip
two separate default handlers
Diffstat (limited to 'cortex-m-rt')
-rw-r--r--cortex-m-rt/link.x.in4
-rw-r--r--cortex-m-rt/src/lib.rs13
2 files changed, 14 insertions, 3 deletions
diff --git a/cortex-m-rt/link.x.in b/cortex-m-rt/link.x.in
index b9436ca..3d71811 100644
--- a/cortex-m-rt/link.x.in
+++ b/cortex-m-rt/link.x.in
@@ -45,8 +45,8 @@ PROVIDE(DebugMonitor = DefaultHandler);
PROVIDE(PendSV = DefaultHandler);
PROVIDE(SysTick = DefaultHandler);
-PROVIDE(DefaultHandler = EndlessLoop);
-PROVIDE(UserHardFault = EndlessLoop);
+PROVIDE(DefaultHandler = DefaultHandler_);
+PROVIDE(UserHardFault = UserHardFault_);
/* # Interrupt vectors */
EXTERN(__INTERRUPTS); /* `static` variable similar to `__EXCEPTIONS` */
diff --git a/cortex-m-rt/src/lib.rs b/cortex-m-rt/src/lib.rs
index 3c2dd89..599ae06 100644
--- a/cortex-m-rt/src/lib.rs
+++ b/cortex-m-rt/src/lib.rs
@@ -530,9 +530,20 @@ pub unsafe extern "C" fn Reset() -> ! {
}
}
+#[allow(unused_variables)]
#[doc(hidden)]
#[no_mangle]
-pub unsafe extern "C" fn EndlessLoop() -> ! {
+pub unsafe extern "C" fn UserHardFault_(ef: &ExceptionFrame) -> ! {
+ loop {
+ // add some side effect to prevent this from turning into a UDF instruction
+ // see rust-lang/rust#28728 for details
+ atomic::compiler_fence(Ordering::SeqCst);
+ }
+}
+
+#[doc(hidden)]
+#[no_mangle]
+pub unsafe extern "C" fn DefaultHandler_() -> ! {
loop {
// add some side effect to prevent this from turning into a UDF instruction
// see rust-lang/rust#28728 for details