From: Hongjie Deng <deng.hongjie@xxxxxxx> We need more stack space, xori/ori no longer apply when _THREAD_MASK exceeds 16 bits Signed-off-by: Hongjie Deng <deng.hongjie@xxxxxxx> --- arch/mips/include/asm/stackframe.h | 8 ++++++++ arch/mips/kernel/genex.S | 6 ++++++ 2 files changed, 14 insertions(+) diff --git a/arch/mips/include/asm/stackframe.h b/arch/mips/include/asm/stackframe.h index aa430a6..6ebc39f 100644 --- a/arch/mips/include/asm/stackframe.h +++ b/arch/mips/include/asm/stackframe.h @@ -278,8 +278,16 @@ sll k0, 3 /* extract cu0 bit */ bltz k0, 9f +#if _THREAD_MASK < (1 << 16 - 1) ori $28, sp, _THREAD_MASK xori $28, _THREAD_MASK +#else + li $28, _THREAD_MASK + or $28, sp, $28 + li $24, _THREAD_MASK + xor $28, $28, $24 +#endif + #ifdef CONFIG_CPU_CAVIUM_OCTEON .set mips64 pref 0, 0($28) /* Prefetch the current pointer */ diff --git a/arch/mips/kernel/genex.S b/arch/mips/kernel/genex.S index bcce32a..5ea4fe4 100644 --- a/arch/mips/kernel/genex.S +++ b/arch/mips/kernel/genex.S @@ -662,8 +662,14 @@ isrdhwr: #endif MTC0 k0, CP0_EPC /* I hope three instructions between MTC0 and ERET are enough... */ +#if _THREAD_MASK < (1 << 16 - 1) ori k1, _THREAD_MASK xori k1, _THREAD_MASK +#else + li $24 ,_THREAD_MASK + or k1, k1, $24 + xor k1, k1, $24 +#endif LONG_L v1, TI_TP_VALUE(k1) .set push .set arch=r4000 -- 1.8.3.1