X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=include%2Fasm-mips%2Fstackframe.h;h=86283c25fd5bb34718d43a201b7733289b3cd953;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=626a8ab288e11fd19d38259c801919d2e1a23428;hpb=5273a3df6485dc2ad6aa7ddd441b9a21970f003b;p=linux-2.6.git diff --git a/include/asm-mips/stackframe.h b/include/asm-mips/stackframe.h index 626a8ab28..86283c25f 100644 --- a/include/asm-mips/stackframe.h +++ b/include/asm-mips/stackframe.h @@ -64,15 +64,21 @@ addu k1, k0 LONG_L k1, %lo(kernelsp)(k1) #endif -#ifdef CONFIG_MIPS64 +#if defined(CONFIG_MIPS64) && !defined(CONFIG_BUILD_ELF64) MFC0 k1, CP0_CONTEXT dsra k1, 23 lui k0, %hi(pgd_current) - daddiu k0, %lo(pgd_current) + addiu k0, %lo(pgd_current) dsubu k1, k0 lui k0, %hi(kernelsp) daddu k1, k0 LONG_L k1, %lo(kernelsp)(k1) +#endif +#if defined(CONFIG_MIPS64) && defined(CONFIG_BUILD_ELF64) + MFC0 k1, CP0_CONTEXT + dsrl k1, 23 + dsll k1, k1, 3 + LONG_L k1, kernelsp(k1) #endif .endm @@ -83,12 +89,17 @@ sll \temp, 2 LONG_S \stackp, kernelsp(\temp) #endif -#ifdef CONFIG_MIPS64 +#if defined(CONFIG_MIPS64) && !defined(CONFIG_BUILD_ELF64) lw \temp, TI_CPU(gp) dsll \temp, 3 lui \temp2, %hi(kernelsp) daddu \temp, \temp2 LONG_S \stackp, %lo(kernelsp)(\temp) +#endif +#if defined(CONFIG_MIPS64) && defined(CONFIG_BUILD_ELF64) + lw \temp, TI_CPU(gp) + dsll \temp, 3 + LONG_S \stackp, kernelsp(\temp) #endif .endm #else @@ -104,6 +115,7 @@ .macro SAVE_SOME .set push + .set noat .set reorder mfc0 k0, CP0_STATUS sll k0, 3 /* extract cu0 bit */ @@ -278,16 +290,16 @@ .macro RESTORE_ALL RESTORE_TEMP - RESTORE_AT RESTORE_STATIC + RESTORE_AT RESTORE_SOME RESTORE_SP .endm .macro RESTORE_ALL_AND_RET RESTORE_TEMP - RESTORE_AT RESTORE_STATIC + RESTORE_AT RESTORE_SOME RESTORE_SP_AND_RET .endm @@ -302,6 +314,7 @@ or t0, t1 xori t0, 0x1f mtc0 t0, CP0_STATUS + irq_disable_hazard .endm /* @@ -314,6 +327,7 @@ or t0, t1 xori t0, 0x1e mtc0 t0, CP0_STATUS + irq_enable_hazard .endm /* @@ -326,6 +340,7 @@ or t0, t1 xori t0, 0x1e mtc0 t0, CP0_STATUS + irq_disable_hazard .endm #endif /* _ASM_STACKFRAME_H */