aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--macros/Cargo.toml2
-rw-r--r--macros/src/codegen/assertions.rs6
-rw-r--r--macros/src/codegen/pre_init.rs6
-rw-r--r--src/export.rs4
4 files changed, 12 insertions, 6 deletions
diff --git a/macros/Cargo.toml b/macros/Cargo.toml
index e4f5cc23..f9d8add7 100644
--- a/macros/Cargo.toml
+++ b/macros/Cargo.toml
@@ -12,7 +12,7 @@ license = "MIT OR Apache-2.0"
name = "cortex-m-rtic-macros"
readme = "../README.md"
repository = "https://github.com/rtic-rs/cortex-m-rtic"
-version = "1.1.2"
+version = "1.1.3"
[lib]
proc-macro = true
diff --git a/macros/src/codegen/assertions.rs b/macros/src/codegen/assertions.rs
index 36ab0364..f6a098b5 100644
--- a/macros/src/codegen/assertions.rs
+++ b/macros/src/codegen/assertions.rs
@@ -28,7 +28,11 @@ pub fn codegen(app: &App, analysis: &Analysis, extra: &Extra) -> Vec<TokenStream
.filter_map(|(_, task)| {
if !util::is_exception(&task.args.binds) {
let interrupt_name = &task.args.binds;
- Some(quote!(assert!((#device::Interrupt::#interrupt_name as u32) < 32);))
+ Some(quote!(
+ if (#device::Interrupt::#interrupt_name as u32) > 31 {
+ ::core::panic!("An interrupt above value 31 is used while in armv6");
+ }
+ ))
} else {
None
}
diff --git a/macros/src/codegen/pre_init.rs b/macros/src/codegen/pre_init.rs
index ae2fd050..3d541a47 100644
--- a/macros/src/codegen/pre_init.rs
+++ b/macros/src/codegen/pre_init.rs
@@ -55,7 +55,7 @@ pub fn codegen(app: &App, analysis: &Analysis, extra: &Extra) -> Vec<TokenStream
);
// Compile time assert that this priority is supported by the device
stmts.push(quote!(
- const _: () = assert!((1 << #nvic_prio_bits) >= #priority as usize, #es);
+ const _: () = if (1 << #nvic_prio_bits) < #priority as usize { ::core::panic!(#es); };
));
stmts.push(quote!(
@@ -84,7 +84,7 @@ pub fn codegen(app: &App, analysis: &Analysis, extra: &Extra) -> Vec<TokenStream
);
// Compile time assert that this priority is supported by the device
stmts.push(quote!(
- const _: () = assert!((1 << #nvic_prio_bits) >= #priority as usize, #es);
+ const _: () = if (1 << #nvic_prio_bits) < #priority as usize { ::core::panic!(#es); };
));
stmts.push(quote!(core.SCB.set_priority(
@@ -109,7 +109,7 @@ pub fn codegen(app: &App, analysis: &Analysis, extra: &Extra) -> Vec<TokenStream
);
// Compile time assert that this priority is supported by the device
stmts.push(quote!(
- const _: () = assert!((1 << #nvic_prio_bits) >= #priority as usize, #es);
+ const _: () = if (1 << #nvic_prio_bits) < #priority as usize { ::core::panic!(#es); };
));
let mono_type = &monotonic.ty;
diff --git a/src/export.rs b/src/export.rs
index 42f3fe2e..6e1e4a65 100644
--- a/src/export.rs
+++ b/src/export.rs
@@ -66,7 +66,9 @@ impl Barrier {
}
pub fn wait(&self) {
- while !self.inner.load(Ordering::Acquire) {}
+ while !self.inner.load(Ordering::Acquire) {
+ core::hint::spin_loop()
+ }
}
}