提交 9c42954d 编写于 作者: R Russell King 提交者: Russell King

[ARM] Move enable_irq and disable_irq to assembler.h

5d25ac03 broke VFP builds due to
enable_irq not being defined as an assembly macro.  Move it to
assembler.h so everyone can use it.
Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
上级 7d420896
...@@ -37,24 +37,6 @@ ...@@ -37,24 +37,6 @@
#endif #endif
.endm .endm
#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
.macro get_thread_info, rd .macro get_thread_info, rd
mov \rd, sp, lsr #13 mov \rd, sp, lsr #13
mov \rd, \rd, lsl #13 mov \rd, \rd, lsl #13
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#include <linux/linkage.h> #include <linux/linkage.h>
#include <linux/init.h> #include <linux/init.h>
#include <asm/asm-offsets.h> #include <asm/asm-offsets.h>
#include <asm/assembler.h>
#include <asm/vfpmacros.h> #include <asm/vfpmacros.h>
.globl do_vfp .globl do_vfp
......
...@@ -80,16 +80,33 @@ ...@@ -80,16 +80,33 @@
instr regs instr regs
/* /*
* Save the current IRQ state and disable IRQs. Note that this macro * Enable and disable interrupts
* assumes FIQs are enabled, and that the processor is in SVC mode.
*/ */
.macro save_and_disable_irqs, oldcpsr
mrs \oldcpsr, cpsr
#if __LINUX_ARM_ARCH__ >= 6 #if __LINUX_ARM_ARCH__ >= 6
.macro disable_irq
cpsid i cpsid i
.endm
.macro enable_irq
cpsie i
.endm
#else #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 #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 .endm
/* /*
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册