File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -4,6 +4,7 @@ use core::arch::asm;
44const IRQ_DISABLE_BIT : usize = 1 << 7 ;
55
66#[ inline]
7+ #[ cfg( target_feature = "aclass" ) ]
78pub fn local_irq_save_and_disable ( ) -> usize {
89 let flags: usize ;
910 unsafe {
@@ -19,6 +20,7 @@ pub fn local_irq_save_and_disable() -> usize {
1920}
2021
2122#[ inline]
23+ #[ cfg( target_feature = "aclass" ) ]
2224pub fn local_irq_restore ( flags : usize ) {
2325 if flags & IRQ_DISABLE_BIT == 0 {
2426 // IRQs were enabled before, re-enable them
@@ -27,3 +29,29 @@ pub fn local_irq_restore(flags: usize) {
2729 }
2830 }
2931}
32+
33+ #[ inline]
34+ #[ cfg( target_feature = "mclass" ) ]
35+ pub fn local_irq_save_and_disable ( ) -> usize {
36+ let primask: usize ;
37+ unsafe {
38+ asm ! (
39+ "mrs {0}, primask" ,
40+ "cpsid i" ,
41+ out( reg) primask,
42+ options( nomem, nostack, preserves_flags)
43+ ) ;
44+ }
45+ primask
46+ }
47+
48+ #[ inline]
49+ #[ cfg( target_feature = "mclass" ) ]
50+ pub fn local_irq_restore ( flags : usize ) {
51+ if flags & 1 == 0 {
52+ unsafe {
53+ asm ! ( "cpsie i" , options( nomem, nostack) ) ;
54+ }
55+ }
56+ }
57+
You can’t perform that action at this time.
0 commit comments