X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=arch%2Fmips%2Finclude%2Fasm%2Fasmmacro.h;h=4225e99bd7bfdbe75b0e47cd8b974c2dd92e1ddc;hb=0f2776e6151a123552fd06b666fe755fa780a967;hp=69a9a22d014aa1412a88bd5f6fd09fcf7de77968;hpb=92f99731e61a3487781762d4e6ae8b1576e68e07;p=~andy%2Flinux diff --git a/arch/mips/include/asm/asmmacro.h b/arch/mips/include/asm/asmmacro.h index 69a9a22d014..4225e99bd7b 100644 --- a/arch/mips/include/asm/asmmacro.h +++ b/arch/mips/include/asm/asmmacro.h @@ -9,6 +9,7 @@ #define _ASM_ASMMACRO_H #include +#include #ifdef CONFIG_32BIT #include @@ -54,11 +55,21 @@ .endm .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 ori \reg, \reg, 1 xori \reg, \reg, 1 mtc0 \reg, CP0_STATUS irq_disable_hazard +#ifdef CONFIG_PREEMPT + lw \reg, TI_PRE_COUNT($28) + addi \reg, \reg, -1 + sw \reg, TI_PRE_COUNT($28) +#endif .endm #endif /* CONFIG_MIPS_MT_SMTC */