aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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