diff options
-rw-r--r-- | asm.s | 7 | ||||
-rw-r--r-- | bin/thumbv6m-none-eabi.a | bin | 2956 -> 3070 bytes | |||
-rw-r--r-- | bin/thumbv7em-none-eabi.a | bin | 5184 -> 5298 bytes | |||
-rw-r--r-- | bin/thumbv7em-none-eabihf.a | bin | 5184 -> 5298 bytes | |||
-rw-r--r-- | bin/thumbv7m-none-eabi.a | bin | 4126 -> 4240 bytes | |||
-rw-r--r-- | bin/thumbv8m.base-none-eabi.a | bin | 4056 -> 4170 bytes | |||
-rw-r--r-- | bin/thumbv8m.main-none-eabi.a | bin | 6466 -> 6580 bytes | |||
-rw-r--r-- | bin/thumbv8m.main-none-eabihf.a | bin | 6466 -> 6580 bytes | |||
-rw-r--r-- | src/asm.rs | 29 |
9 files changed, 36 insertions, 0 deletions
@@ -114,6 +114,13 @@ __sev: sev bx lr + + .section .text.__udf + .global __udf + .thumb_func +__udf: + udf + .section .text.__wfe .global __wfe .thumb_func diff --git a/bin/thumbv6m-none-eabi.a b/bin/thumbv6m-none-eabi.a Binary files differindex 0684d4e..06a7cb7 100644 --- a/bin/thumbv6m-none-eabi.a +++ b/bin/thumbv6m-none-eabi.a diff --git a/bin/thumbv7em-none-eabi.a b/bin/thumbv7em-none-eabi.a Binary files differindex cbfe5ae..48da24d 100644 --- a/bin/thumbv7em-none-eabi.a +++ b/bin/thumbv7em-none-eabi.a diff --git a/bin/thumbv7em-none-eabihf.a b/bin/thumbv7em-none-eabihf.a Binary files differindex cbfe5ae..48da24d 100644 --- a/bin/thumbv7em-none-eabihf.a +++ b/bin/thumbv7em-none-eabihf.a diff --git a/bin/thumbv7m-none-eabi.a b/bin/thumbv7m-none-eabi.a Binary files differindex 6e77aeb..296f66f 100644 --- a/bin/thumbv7m-none-eabi.a +++ b/bin/thumbv7m-none-eabi.a diff --git a/bin/thumbv8m.base-none-eabi.a b/bin/thumbv8m.base-none-eabi.a Binary files differindex 44ee9af..026250b 100644 --- a/bin/thumbv8m.base-none-eabi.a +++ b/bin/thumbv8m.base-none-eabi.a diff --git a/bin/thumbv8m.main-none-eabi.a b/bin/thumbv8m.main-none-eabi.a Binary files differindex 6590c92..6848518 100644 --- a/bin/thumbv8m.main-none-eabi.a +++ b/bin/thumbv8m.main-none-eabi.a diff --git a/bin/thumbv8m.main-none-eabihf.a b/bin/thumbv8m.main-none-eabihf.a Binary files differindex 6590c92..6848518 100644 --- a/bin/thumbv8m.main-none-eabihf.a +++ b/bin/thumbv8m.main-none-eabihf.a @@ -81,6 +81,35 @@ pub fn nop() { } } + +/// Generate an Undefined Instruction exception. +/// +/// Can be used as a stable alternative to `core::intrinsics::abort`. +#[inline] +pub fn udf() -> ! { + match () { + #[cfg(all(cortex_m, feature = "inline-asm"))] + () => unsafe { + asm!("udf" :::: "volatile"); + core::hint::unreachable_unchecked(); + }, + + #[cfg(all(cortex_m, not(feature = "inline-asm")))] + () => unsafe { + extern "C" { + fn __udf(); + } + + __udf(); + + core::hint::unreachable_unchecked(); + }, + + #[cfg(not(cortex_m))] + () => unimplemented!(), + } +} + /// Wait For Event #[inline] pub fn wfe() { |