firmware/br-ext-chip-ingenic/board/t40/kernel/patches/00000-arch_mips_kernel_sign...

44 lines
1.1 KiB
Diff

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);
}