diff --git a/arch/mips/kernel/smtc-asm.S b/arch/mips/kernel/smtc-asm.S index 72c6d98..a1709de 100644 --- a/arch/mips/kernel/smtc-asm.S +++ b/arch/mips/kernel/smtc-asm.S @@ -96,15 +96,14 @@ FEXPORT(__smtc_ipi_vector) /* Save all will redundantly recompute the SP, but use it for now */ SAVE_ALL CLI - move a0,sp /* Function to be invoked passed stack pad slot 5 */ lw t0,PT_PADSLOT5(sp) - /* Argument from sender passed in stack pad slot 4 */ + /* First argument is pointer to pt_regs on kernel stack */ + move a0,sp + /* Additional argument from sender passed in stack pad slot 4 */ lw a1,PT_PADSLOT4(sp) - jalr t0 - nop - j ret_from_irq - nop + PTR_LA ra,ret_from_irq + jr t0 /* * Called from idle loop to provoke processing of queued IPIs diff --git a/arch/mips/kernel/smtc.c b/arch/mips/kernel/smtc.c index 2e8e52c..1657d15 100644 --- a/arch/mips/kernel/smtc.c +++ b/arch/mips/kernel/smtc.c @@ -269,7 +269,8 @@ void smtc_configure_tlb(void) * of their initialization in smtc_cpu_setup(). */ - tlbsiz = tlbsiz & 0x3f; /* MIPS32 limits TLB indices to 64 */ + /* MIPS32 limits TLB indices to 64 */ + if (tlbsiz > 64) tlbsiz = 64; cpu_data[0].tlbsize = tlbsiz; smtc_status |= SMTC_TLB_SHARED;