瀏覽代碼

[ARM] Move enable_irq and disable_irq to assembler.h

5d25ac038a317d454a4321cba955f756400835a5 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: Russell King <rmk+kernel@arm.linux.org.uk>
Russell King 19 年之前
父節點
當前提交
9c42954dfd
共有 3 個文件被更改,包括 23 次插入23 次删除
  1. 0 18
      arch/arm/kernel/entry-header.S
  2. 1 0
      arch/arm/vfp/entry.S
  3. 22 5
      include/asm-arm/assembler.h

+ 0 - 18
arch/arm/kernel/entry-header.S

@@ -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

+ 1 - 0
arch/arm/vfp/entry.S

@@ -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

+ 22 - 5
include/asm-arm/assembler.h

@@ -80,16 +80,33 @@
 	instr	regs
 	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
 #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
 
 
 /*
 /*