diff -drupN a/arch/mips/kernel/signal.c b/arch/mips/kernel/signal.c --- a/arch/mips/kernel/signal.c 2017-10-21 18:09:07.000000000 +0300 +++ b/arch/mips/kernel/signal.c 2022-06-09 05:02:27.000000000 +0300 @@ -39,6 +39,7 @@ #include #include #include +#include #include "signal-common.h" @@ -440,6 +441,15 @@ int setup_sigcontext(struct pt_regs *reg */ err |= protected_save_fp_context(sc); +#ifdef CONFIG_MACH_XBURST + if (cpu_has_mxu) { + unsigned int *regs; + regs = __get_mxu_regs(current); + for (i = 0; i < NUM_MXU_REGS; i++){ + err |= __put_user(regs[i], &sc->sc_mxu[i]); + } + } +#endif return err; } @@ -513,6 +523,15 @@ int restore_sigcontext(struct pt_regs *r for (i = 1; i < 32; i++) err |= __get_user(regs->regs[i], &sc->sc_regs[i]); +#ifdef CONFIG_MACH_XBURST + if (cpu_has_mxu) { + unsigned int regs[NUM_MXU_REGS]; + for (i = 0; i < NUM_MXU_REGS; i++){ + err |= __get_user(regs[i], &sc->sc_mxu[i]); + } + __let_mxu_regs(current,regs); + } +#endif return err ?: protected_restore_fp_context(sc); }