Skip to content

Commit 4c7169f

Browse files
committed
two separate default handlers
1 parent 2557ac4 commit 4c7169f

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

cortex-m-rt/link.x.in

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ PROVIDE(DebugMonitor = DefaultHandler);
4545
PROVIDE(PendSV = DefaultHandler);
4646
PROVIDE(SysTick = DefaultHandler);
4747

48-
PROVIDE(DefaultHandler = EndlessLoop);
49-
PROVIDE(UserHardFault = EndlessLoop);
48+
PROVIDE(DefaultHandler = DefaultHandler_);
49+
PROVIDE(UserHardFault = UserHardFault_);
5050

5151
/* # Interrupt vectors */
5252
EXTERN(__INTERRUPTS); /* `static` variable similar to `__EXCEPTIONS` */

cortex-m-rt/src/lib.rs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -530,9 +530,20 @@ pub unsafe extern "C" fn Reset() -> ! {
530530
}
531531
}
532532

533+
#[allow(unused_variables)]
533534
#[doc(hidden)]
534535
#[no_mangle]
535-
pub unsafe extern "C" fn EndlessLoop() -> ! {
536+
pub unsafe extern "C" fn UserHardFault_(ef: &ExceptionFrame) -> ! {
537+
loop {
538+
// add some side effect to prevent this from turning into a UDF instruction
539+
// see rust-lang/rust#28728 for details
540+
atomic::compiler_fence(Ordering::SeqCst);
541+
}
542+
}
543+
544+
#[doc(hidden)]
545+
#[no_mangle]
546+
pub unsafe extern "C" fn DefaultHandler_() -> ! {
536547
loop {
537548
// add some side effect to prevent this from turning into a UDF instruction
538549
// see rust-lang/rust#28728 for details

0 commit comments

Comments
 (0)