Skip to content
This repository has been archived by the owner on Jan 24, 2022. It is now read-only.

Commit

Permalink
rename UserHardFault to HardFault
Browse files Browse the repository at this point in the history
so it matches the exception name (`#[exception] fn HardFault(..`)
  • Loading branch information
japaric committed Nov 14, 2018
1 parent b0d190b commit 790e424
Show file tree
Hide file tree
Showing 8 changed files with 20 additions and 20 deletions.
10 changes: 5 additions & 5 deletions asm.s
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# LLD requires that the section flags are explicitly set here
.section .HardFault, "ax"
.global HardFault
.section .HardFaultTrampoline, "ax"
.global HardFaultTrampoline
# .type and .thumb_func are both required; otherwise its Thumb bit does not
# get set and an invalid vector table is generated
.type HardFault,%function
.type HardFaultTrampoline,%function
.thumb_func
HardFault:
HardFaultTrampoline:
mrs r0, MSP
b UserHardFault
b HardFault
Binary file modified bin/thumbv6m-none-eabi.a
Binary file not shown.
Binary file modified bin/thumbv7em-none-eabi.a
Binary file not shown.
Binary file modified bin/thumbv7em-none-eabihf.a
Binary file not shown.
Binary file modified bin/thumbv7m-none-eabi.a
Binary file not shown.
8 changes: 4 additions & 4 deletions link.x.in
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ EXTERN(__EXCEPTIONS); /* depends on all the these PROVIDED symbols */
EXTERN(DefaultHandler);

PROVIDE(NonMaskableInt = DefaultHandler);
EXTERN(HardFault);
EXTERN(HardFaultTrampoline);
PROVIDE(MemoryManagement = DefaultHandler);
PROVIDE(BusFault = DefaultHandler);
PROVIDE(UsageFault = DefaultHandler);
Expand All @@ -46,7 +46,7 @@ PROVIDE(PendSV = DefaultHandler);
PROVIDE(SysTick = DefaultHandler);

PROVIDE(DefaultHandler = DefaultHandler_);
PROVIDE(UserHardFault = UserHardFault_);
PROVIDE(HardFault = HardFault_);

/* # Interrupt vectors */
EXTERN(__INTERRUPTS); /* `static` variable similar to `__EXCEPTIONS` */
Expand Down Expand Up @@ -86,8 +86,8 @@ SECTIONS
.text _stext :
{
*(.text .text.*);
*(.HardFault);
*(.UserHardFault);
*(.HardFaultTrampoline);
*(.HardFault.*);
} > FLASH

/* ### .rodata */
Expand Down
4 changes: 2 additions & 2 deletions macros/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -397,8 +397,8 @@ pub fn exception(args: TokenStream, input: TokenStream) -> TokenStream {
let pat = &arg.pat;

quote!(
#[export_name = "UserHardFault"]
#[link_section = ".UserHardFault"]
#[export_name = "HardFault"]
#[link_section = ".HardFault.user"]
#(#attrs)*
pub #unsafety extern "C" fn #hash(#arg) -> ! {
extern crate cortex_m_rt;
Expand Down
18 changes: 9 additions & 9 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -203,12 +203,12 @@
//! - `DefaultHandler`. This is the default handler. If not overridden using `#[exception] fn
//! DefaultHandler(..` this will be an infinite loop.
//!
//! - `HardFault`. This is the hard fault handler. This function is simply a trampoline that jumps
//! into the user defined hard fault handler named `UserHardFault`. The trampoline is required to
//! set up the pointer to the stacked exception frame.
//! - `HardFaultTrampoline`. This is the real hard fault handler. This function is simply a
//! trampoline that jumps into the user defined hard fault handler named `HardFault`. The
//! trampoline is required to set up the pointer to the stacked exception frame.
//!
//! - `UserHardFault`. This is the user defined hard fault handler. If not overridden using
//! `#[exception] fn HardFault(..` this will be an infinite loop.
//! - `HardFault`. This is the user defined hard fault handler. If not overridden using
//! `#[exception] fn HardFault(..` it will default to an infinite loop.
//!
//! - `__STACK_START`. This is the first entry in the `.vector_table` section. This symbol contains
//! the initial value of the stack pointer; this is where the stack will be located -- the stack
Expand Down Expand Up @@ -534,9 +534,9 @@ pub unsafe extern "C" fn Reset() -> ! {

#[allow(unused_variables)]
#[doc(hidden)]
#[link_section = ".UserHardFault"]
#[link_section = ".HardFault.default"]
#[no_mangle]
pub unsafe extern "C" fn UserHardFault_(ef: &ExceptionFrame) -> ! {
pub unsafe extern "C" fn HardFault_(ef: &ExceptionFrame) -> ! {
loop {
// add some side effect to prevent this from turning into a UDF instruction
// see rust-lang/rust#28728 for details
Expand Down Expand Up @@ -590,7 +590,7 @@ pub enum Exception {
extern "C" {
fn NonMaskableInt();

fn HardFault();
fn HardFaultTrampoline();

#[cfg(not(armv6m))]
fn MemoryManagement();
Expand Down Expand Up @@ -629,7 +629,7 @@ pub static __EXCEPTIONS: [Vector; 14] = [
handler: NonMaskableInt,
},
// Exception 3: Hard Fault Interrupt.
Vector { handler: HardFault },
Vector { handler: HardFaultTrampoline },
// Exception 4: Memory Management Interrupt [not on Cortex-M0 variants].
#[cfg(not(armv6m))]
Vector {
Expand Down

0 comments on commit 790e424

Please sign in to comment.