|
@@ -80,16 +80,33 @@
|
|
|
instr regs
|
|
|
|
|
|
/*
|
|
|
- * Save the current IRQ state and disable IRQs. Note that this macro
|
|
|
- * assumes FIQs are enabled, and that the processor is in SVC mode.
|
|
|
+ * Enable and disable interrupts
|
|
|
*/
|
|
|
- .macro save_and_disable_irqs, oldcpsr
|
|
|
- mrs \oldcpsr, cpsr
|
|
|
#if __LINUX_ARM_ARCH__ >= 6
|
|
|
+ .macro disable_irq
|
|
|
cpsid i
|
|
|
+ .endm
|
|
|
+
|
|
|
+ .macro enable_irq
|
|
|
+ cpsie i
|
|
|
+ .endm
|
|
|
#else
|
|
|
- msr cpsr_c, #PSR_I_BIT | MODE_SVC
|
|
|
+ .macro disable_irq
|
|
|
+ msr cpsr_c, #PSR_I_BIT | SVC_MODE
|
|
|
+ .endm
|
|
|
+
|
|
|
+ .macro enable_irq
|
|
|
+ msr cpsr_c, #SVC_MODE
|
|
|
+ .endm
|
|
|
#endif
|
|
|
+
|
|
|
+/*
|
|
|
+ * Save the current IRQ state and disable IRQs. Note that this macro
|
|
|
+ * assumes FIQs are enabled, and that the processor is in SVC mode.
|
|
|
+ */
|
|
|
+ .macro save_and_disable_irqs, oldcpsr
|
|
|
+ mrs \oldcpsr, cpsr
|
|
|
+ disable_irq
|
|
|
.endm
|
|
|
|
|
|
/*
|