MIPS: Allow emulation for unaligned [LS]DXC1 instructions
authorPaul Burton <paul.burton@imgtec.com>
Thu, 21 Apr 2016 11:25:38 +0000 (12:25 +0100)
committerRalf Baechle <ralf@linux-mips.org>
Fri, 13 May 2016 13:30:25 +0000 (15:30 +0200)
If an address error exception occurs for a LDXC1 or SDXC1 instruction,
within the cop1x opcode space, allow it to be passed through to the FPU
emulator rather than resulting in a SIGILL. This causes LDXC1 & SDXC1 to
be handled in a manner consistent with the more common LDC1 & SDC1
instructions.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
Tested-by: Aurelien Jarno <aurelien@aurel32.net>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/13143/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/kernel/unaligned.c

index 5c62065cbf22d610323331b8d3bd56e6e53fa793..28b3af73a17b2bb00018bb6feee1e93eae2332fc 100644 (file)
@@ -1191,6 +1191,7 @@ static void emulate_load_store_insn(struct pt_regs *regs,
        case ldc1_op:
        case swc1_op:
        case sdc1_op:
+       case cop1x_op:
                die_if_kernel("Unaligned FP access in kernel code", regs);
                BUG_ON(!used_math());