X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=include%2Fasm-arm%2Fassembler.h;h=d53bafa9bf1c58f80fffdb2910571d3544340e1d;hb=43bc926fffd92024b46cafaf7350d669ba9ca884;hp=69a28f96bee2ee14994a11d9fba1516306496534;hpb=cee37fe97739d85991964371c1f3a745c00dd236;p=linux-2.6.git diff --git a/include/asm-arm/assembler.h b/include/asm-arm/assembler.h index 69a28f96b..d53bafa9b 100644 --- a/include/asm-arm/assembler.h +++ b/include/asm-arm/assembler.h @@ -79,14 +79,34 @@ #define RETINSTR(instr, regs...)\ instr regs +/* + * Enable and disable interrupts + */ +#if __LINUX_ARM_ARCH__ >= 6 + .macro disable_irq + cpsid i + .endm + + .macro enable_irq + cpsie i + .endm +#else + .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, temp + .macro save_and_disable_irqs, oldcpsr mrs \oldcpsr, cpsr - mov \temp, #PSR_I_BIT | MODE_SVC - msr cpsr_c, \temp + disable_irq .endm /*