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 <asm/dsp.h>
 #include <asm/inst.h>
 #include <asm/msa.h>
+#include <mxu.h>
 
 #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);
 }