powerpc/sstep: Fix issues with mcrf
authorAnton Blanchard <anton@samba.org>
Tue, 19 Sep 2017 10:45:53 +0000 (20:45 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Wed, 20 Sep 2017 03:30:09 +0000 (13:30 +1000)
mcrf broke when we changed analyse_instr() to not modify the register
state. The instruction writes to the CR, so we need to store the result
in op->ccval, not op->val.

Fixes: 3cdfcbfd32b9 ("powerpc: Change analyse_instr so it doesn't modify *regs")
Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/lib/sstep.c

index 9d72e59003201ea8f354c462eb590af48c9616c7..c4cda1afb49d3e0fe597040f8fa8580cc944f0bf 100644 (file)
@@ -1513,10 +1513,10 @@ int analyse_instr(struct instruction_op *op, const struct pt_regs *regs,
                        op->type = COMPUTE + SETCC;
                        imm = 0xf0000000UL;
                        val = regs->gpr[rd];
-                       op->val = regs->ccr;
+                       op->ccval = regs->ccr;
                        for (sh = 0; sh < 8; ++sh) {
                                if (instr & (0x80000 >> sh))
-                                       op->val = (op->val & ~imm) |
+                                       op->ccval = (op->ccval & ~imm) |
                                                (val & imm);
                                imm >>= 4;
                        }