powerpc/sstep: Fix issues with mcrf
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: 3cdfcbfd32
("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>
This commit is contained in:
parent
ad47ff3e33
commit
5bcaa4cc41
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue