[ARM] Clean up save_and_disable_irqs macro and allow use of ARMv6 CPSID

save_and_disable_irqs does not need to use mov + msr (which was
introduced to work around a documentation bug which was propagated
into binutils.)  Use msr with an immediate constant, and if we're
building for ARMv6 or later, use the new CPSID instruction.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
Russell King
2005-11-09 15:04:22 +00:00
committed by Russell King
parent be6eb9b79f
commit 59d1ff3bfb
2 changed files with 8 additions and 5 deletions

View File

@ -83,10 +83,13 @@
* 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, temp
.macro save_and_disable_irqs, oldcpsr
mrs \oldcpsr, cpsr
mov \temp, #PSR_I_BIT | MODE_SVC
msr cpsr_c, \temp
#if __LINUX_ARM_ARCH__ >= 6
cpsid i
#else
msr cpsr_c, #PSR_I_BIT | MODE_SVC
#endif
.endm
/*