This series introduces initial support for the MIPS SIMD Architecture (MSA) ASE introduced with MIPSr5. This support allows for MSA being detected & enabled for tasks which use it, and for vector registers (which are aliased with FP registers) to be context switched. MSA implementations with vector register partitioning are not handled since none currently exist, and a mechanism for exposing the vector registers via ptrace remains to be added later. The series applies atop the current mips-for-linux-next branch. An earlier version of the first patch has been sent to the list before, but is now included in this series to make its intent clearer. Paul Burton (15): mips: simplify FP context access mips: update outdated comment mips: move & rename fpu_emulator_{save,restore}_context mips: don't require FPU on sigcontext setup/restore mips: replace hardcoded 32 with NUM_FPU_REGS in ptrace mips: clear upper bits of FP registers on emulator writes mips: don't assume 64-bit FP registers for dump_{,task_}fpu mips: don't assume 64-bit FP registers for FP regset mips: don't assume 64-bit FP registers for context switch mips: add MSA register definitions & access mips: detect the MSA ASE mips: basic MSA context switching support mips: dumb MSA FP exception handler mips: panic if vector register partitioning is implemented mips: save/restore MSA context around signals arch/mips/Kconfig | 20 ++ arch/mips/Makefile | 5 + arch/mips/include/asm/asmmacro-32.h | 128 ++++++------- arch/mips/include/asm/asmmacro.h | 319 +++++++++++++++++++++++++------- arch/mips/include/asm/cpu-features.h | 6 + arch/mips/include/asm/cpu-info.h | 1 + arch/mips/include/asm/cpu.h | 1 + arch/mips/include/asm/fpu.h | 2 +- arch/mips/include/asm/mipsregs.h | 1 + arch/mips/include/asm/msa.h | 199 ++++++++++++++++++++ arch/mips/include/asm/processor.h | 45 ++++- arch/mips/include/asm/sigcontext.h | 2 + arch/mips/include/asm/switch_to.h | 22 ++- arch/mips/include/asm/thread_info.h | 4 + arch/mips/include/uapi/asm/sigcontext.h | 8 + arch/mips/kernel/asm-offsets.c | 69 +++++++ arch/mips/kernel/cpu-probe.c | 26 +++ arch/mips/kernel/genex.S | 2 + arch/mips/kernel/proc.c | 1 + arch/mips/kernel/process.c | 23 ++- arch/mips/kernel/ptrace.c | 85 ++++++--- arch/mips/kernel/ptrace32.c | 25 +-- arch/mips/kernel/r4k_fpu.S | 213 +++++++++++++++++++++ arch/mips/kernel/r4k_switch.S | 58 ++++-- arch/mips/kernel/signal.c | 136 +++++++++++--- arch/mips/kernel/signal32.c | 134 ++++++++++++-- arch/mips/kernel/traps.c | 113 ++++++++++- arch/mips/math-emu/cp1emu.c | 51 +++-- arch/mips/math-emu/kernel_linkage.c | 76 +------- 29 files changed, 1433 insertions(+), 342 deletions(-) create mode 100644 arch/mips/include/asm/msa.h -- 1.8.5.3