|
@@ -9,6 +9,7 @@
|
|
#define _ASM_ASMMACRO_H
|
|
#define _ASM_ASMMACRO_H
|
|
|
|
|
|
#include <asm/hazards.h>
|
|
#include <asm/hazards.h>
|
|
|
|
+#include <asm/asm-offsets.h>
|
|
|
|
|
|
#ifdef CONFIG_32BIT
|
|
#ifdef CONFIG_32BIT
|
|
#include <asm/asmmacro-32.h>
|
|
#include <asm/asmmacro-32.h>
|
|
@@ -54,11 +55,21 @@
|
|
.endm
|
|
.endm
|
|
|
|
|
|
.macro local_irq_disable reg=t0
|
|
.macro local_irq_disable reg=t0
|
|
|
|
+#ifdef CONFIG_PREEMPT
|
|
|
|
+ lw \reg, TI_PRE_COUNT($28)
|
|
|
|
+ addi \reg, \reg, 1
|
|
|
|
+ sw \reg, TI_PRE_COUNT($28)
|
|
|
|
+#endif
|
|
mfc0 \reg, CP0_STATUS
|
|
mfc0 \reg, CP0_STATUS
|
|
ori \reg, \reg, 1
|
|
ori \reg, \reg, 1
|
|
xori \reg, \reg, 1
|
|
xori \reg, \reg, 1
|
|
mtc0 \reg, CP0_STATUS
|
|
mtc0 \reg, CP0_STATUS
|
|
irq_disable_hazard
|
|
irq_disable_hazard
|
|
|
|
+#ifdef CONFIG_PREEMPT
|
|
|
|
+ lw \reg, TI_PRE_COUNT($28)
|
|
|
|
+ addi \reg, \reg, -1
|
|
|
|
+ sw \reg, TI_PRE_COUNT($28)
|
|
|
|
+#endif
|
|
.endm
|
|
.endm
|
|
#endif /* CONFIG_MIPS_MT_SMTC */
|
|
#endif /* CONFIG_MIPS_MT_SMTC */
|
|
|
|
|