diff options
Diffstat (limited to 'macros/src')
-rw-r--r-- | macros/src/codegen/assertions.rs | 6 | ||||
-rw-r--r-- | macros/src/codegen/pre_init.rs | 6 |
2 files changed, 8 insertions, 4 deletions
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; |