On Tue, 14 Sept 2021 at 16:54, Jiaxun Yang <jiaxun.yang@xxxxxxxxxxx> wrote: > > > > 在 2021/9/14 2:50, Feiyang Chen 写道: > > Convert MIPS to use the generic entry infrastructure from > > kernel/entry/*. > > > > v2: Use regs->regs[27] to mark whether to restore all registers in > > handle_sys and enable IRQ stack. > Hi Feiyang, > > Thanks for your patch, could you please expand how could this improve > the performance? > Hi, Jiaxun, We always restore all registers in handle_sys in the v1 of the patchset. Since regs->regs[27] is marked where we need to restore all registers, now we simply use it as the return value of do_syscall to determine whether we can only restore partial registers in handle_sys. + move a0, sp + jal do_syscall + beqz v0, 1f # restore all registers? + nop + + .set noat + RESTORE_TEMP + RESTORE_STATIC + RESTORE_AT +1: RESTORE_SOME + RESTORE_SP_AND_RET + .set at Thanks, Feiyang > Thanks. > - Jiaxun > > > > Feiyang Chen (2): > > MIPS: convert syscall to generic entry > > MIPS: convert irq to generic entry > > > > arch/mips/Kconfig | 1 + > > arch/mips/include/asm/entry-common.h | 13 ++ > > arch/mips/include/asm/irqflags.h | 42 ---- > > arch/mips/include/asm/ptrace.h | 8 +- > > arch/mips/include/asm/sim.h | 70 ------- > > arch/mips/include/asm/stackframe.h | 8 + > > arch/mips/include/asm/syscall.h | 5 + > > arch/mips/include/asm/thread_info.h | 17 +- > > arch/mips/include/uapi/asm/ptrace.h | 7 +- > > arch/mips/kernel/Makefile | 14 +- > > arch/mips/kernel/entry.S | 143 +------------- > > arch/mips/kernel/genex.S | 150 +++------------ > > arch/mips/kernel/head.S | 1 - > > arch/mips/kernel/linux32.c | 1 - > > arch/mips/kernel/ptrace.c | 78 -------- > > arch/mips/kernel/r4k-bugs64.c | 14 +- > > arch/mips/kernel/scall.S | 136 +++++++++++++ > > arch/mips/kernel/scall32-o32.S | 223 --------------------- > > arch/mips/kernel/scall64-n32.S | 107 ---------- > > arch/mips/kernel/scall64-n64.S | 116 ----------- > > arch/mips/kernel/scall64-o32.S | 221 --------------------- > > arch/mips/kernel/signal.c | 59 +----- > > arch/mips/kernel/signal_n32.c | 15 +- > > arch/mips/kernel/signal_o32.c | 29 +-- > > arch/mips/kernel/syscall.c | 148 +++++++++++--- > > arch/mips/kernel/syscalls/syscall_n32.tbl | 8 +- > > arch/mips/kernel/syscalls/syscall_n64.tbl | 8 +- > > arch/mips/kernel/syscalls/syscall_o32.tbl | 8 +- > > arch/mips/kernel/traps.c | 225 ++++++++++++++++------ > > arch/mips/kernel/unaligned.c | 19 +- > > arch/mips/mm/c-octeon.c | 15 ++ > > arch/mips/mm/cex-oct.S | 8 +- > > arch/mips/mm/fault.c | 12 +- > > arch/mips/mm/tlbex-fault.S | 7 +- > > 34 files changed, 594 insertions(+), 1342 deletions(-) > > create mode 100644 arch/mips/include/asm/entry-common.h > > delete mode 100644 arch/mips/include/asm/sim.h > > create mode 100644 arch/mips/kernel/scall.S > > delete mode 100644 arch/mips/kernel/scall32-o32.S > > delete mode 100644 arch/mips/kernel/scall64-n32.S > > delete mode 100644 arch/mips/kernel/scall64-n64.S > > delete mode 100644 arch/mips/kernel/scall64-o32.S > > >