23 lines
635 B
ArmAsm
23 lines
635 B
ArmAsm
|
|
.text
|
||
|
|
.thumb
|
||
|
|
.align 2
|
||
|
|
.global StartCritical
|
||
|
|
.global EndCritical
|
||
|
|
|
||
|
|
// *********** StartCritical ************************
|
||
|
|
//make a copy of previous I bit, disable interrupts
|
||
|
|
// inputs : none
|
||
|
|
// outputs : R0=previous I bit
|
||
|
|
StartCritical:
|
||
|
|
MRS R0, PRIMASK // save old status
|
||
|
|
CPSID I // mask all (except faults)
|
||
|
|
BX LR
|
||
|
|
|
||
|
|
// *********** EndCritical ************************
|
||
|
|
// using the copy of previous I bit, restore I bit to previous value
|
||
|
|
// inputs : R0=previous I bit
|
||
|
|
// outputs : none
|
||
|
|
EndCritical:
|
||
|
|
MSR PRIMASK, R0
|
||
|
|
BX LR
|