• Aleksandar Markovic's avatar
    MIPS: math-emu: Fix final emulation phase for certain instructions · 00ecb4b1
    Aleksandar Markovic authored
    commit 409fcace upstream.
    
    Fix final phase of <CLASS|MADDF|MSUBF|MAX|MIN|MAXA|MINA>.<D|S>
    emulation. Provide proper generation of SIGFPE signal and updating
    debugfs FP exception stats in cases of any exception flags set in
    preceding phases of emulation.
    
    CLASS.<D|S> instruction may generate "Unimplemented Operation" FP
    exception. <MADDF|MSUBF>.<D|S> instructions may generate "Inexact",
    "Unimplemented Operation", "Invalid Operation", "Overflow", and
    "Underflow" FP exceptions. <MAX|MIN|MAXA|MINA>.<D|S> instructions
    can generate "Unimplemented Operation" and "Invalid Operation" FP
    exceptions.
    
    The proper final processing of the cases when any FP exception
    flag is set is achieved by replacing "break" statement with "goto
    copcsr" statement. With such solution, this patch brings the final
    phase of emulation of the above instructions consistent with the
    one corresponding to the previously implemented emulation of other
    related FPU instructions (ADD, SUB, etc.).
    
    Fixes: 38db37ba ("MIPS: math-emu: Add support for the MIPS R6 CLASS FPU instruction")
    Fixes: e24c3bec ("MIPS: math-emu: Add support for the MIPS R6 MADDF FPU instruction")
    Fixes: 83d43305 ("MIPS: math-emu: Add support for the MIPS R6 MSUBF FPU instruction")
    Fixes: a79f5f9b ("MIPS: math-emu: Add support for the MIPS R6 MAX{, A} FPU instruction")
    Fixes: 4e9561b2 ("MIPS: math-emu: Add support for the MIPS R6 MIN{, A} FPU instruction")
    Signed-off-by: default avatarAleksandar Markovic <aleksandar.markovic@mips.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: Douglas Leung <douglas.leung@mips.com>
    Cc: Goran Ferenc <goran.ferenc@mips.com>
    Cc: "Maciej W. Rozycki" <macro@imgtec.com>
    Cc: Miodrag Dinic <miodrag.dinic@mips.com>
    Cc: Paul Burton <paul.burton@mips.com>
    Cc: Petar Jovanovic <petar.jovanovic@mips.com>
    Cc: Raghu Gandham <raghu.gandham@mips.com>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/17581/Signed-off-by: default avatarJames Hogan <jhogan@kernel.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    00ecb4b1
cp1emu.c 63.5 KB