]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
[PATCH] MIPS: Fix branch emulation for floating-point exceptions.
authorWin Treese <treese@acm.org>
Wed, 26 Apr 2006 23:00:04 +0000 (00:00 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 1 May 2006 19:03:44 +0000 (12:03 -0700)
In the branch emulation for floating-point exceptions, __compute_return_epc
must determine for bc1f et al which condition code bit to test. This is
based on bits <4:2> of the rt field. The switch statement to distinguish
bc1f et al needs to use only the two low bits of rt, but the old code tests
on the whole rt field.  This patch masks off the proper bits.

Signed-off-by: Win Treese <treese@acm.org>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
arch/mips/kernel/branch.c

index 374de839558d58467c381a6384df6a634b506219..b6232d9033cb68c0e1a5a14cde042b83aa95161e 100644 (file)
@@ -184,7 +184,7 @@ int __compute_return_epc(struct pt_regs *regs)
                bit = (insn.i_format.rt >> 2);
                bit += (bit != 0);
                bit += 23;
-               switch (insn.i_format.rt) {
+               switch (insn.i_format.rt & 3) {
                case 0: /* bc1f */
                case 2: /* bc1fl */
                        if (~fcr31 & (1 << bit))