aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Adam Greig <adam@adamgreig.com> 2020-03-15 19:58:19 +0000
committerGravatar Adam Greig <adam@adamgreig.com> 2020-03-15 20:01:11 +0000
commite3d7092189b76ff31edc24b43e6d2a75c84b6358 (patch)
tree9a4fa9ff1bfa00a366f5ac13c3544aa2dc4bfe00 /src
parent539c6d00fffabaf7c3f61f2f8c1aaefa661fa500 (diff)
downloadcortex-m-e3d7092189b76ff31edc24b43e6d2a75c84b6358.tar.gz
cortex-m-e3d7092189b76ff31edc24b43e6d2a75c84b6358.tar.zst
cortex-m-e3d7092189b76ff31edc24b43e6d2a75c84b6358.zip
Mark asm::udf as divergent
Diffstat (limited to 'src')
-rw-r--r--src/asm.rs11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/asm.rs b/src/asm.rs
index 593aeac..3fe6393 100644
--- a/src/asm.rs
+++ b/src/asm.rs
@@ -86,10 +86,13 @@ pub fn nop() {
///
/// Can be used as a stable alternative to `core::intrinsics::abort`.
#[inline]
-pub fn udf() {
+pub fn udf() -> ! {
match () {
#[cfg(all(cortex_m, feature = "inline-asm"))]
- () => unsafe { asm!("udf" :::: "volatile") },
+ () => unsafe {
+ asm!("udf" :::: "volatile");
+ loop { continue }
+ },
#[cfg(all(cortex_m, not(feature = "inline-asm")))]
() => unsafe {
@@ -97,7 +100,9 @@ pub fn udf() {
fn __udf();
}
- __udf()
+ __udf();
+
+ loop { continue }
},
#[cfg(not(cortex_m))]