[PATCH 1/2] powerpc: Fix emulation of mcrf in emulate_step()
Naveen N. Rao
naveen.n.rao at linux.vnet.ibm.com
Fri Jun 16 03:27:01 AEST 2017
On 2017/06/15 09:46AM, Anton Blanchard wrote:
> From: Anton Blanchard <anton at samba.org>
>
> The mcrf emulation code was looking at the CR fields in the reverse
> order. It also relied on reserved fields being zero which is somewhat
> fragile, so fix that too.
Yikes! Amazing catch!
Acked-by: Naveen N. Rao <naveen.n.rao at linux.vnet.ibm.com>
Thanks,
Naveen
>
> Cc: stable at vger.kernel.org
> Signed-off-by: Anton Blanchard <anton at samba.org>
> ---
> arch/powerpc/lib/sstep.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/arch/powerpc/lib/sstep.c b/arch/powerpc/lib/sstep.c
> index 33117f8a0882..fb84f51b1f0b 100644
> --- a/arch/powerpc/lib/sstep.c
> +++ b/arch/powerpc/lib/sstep.c
> @@ -683,8 +683,10 @@ int analyse_instr(struct instruction_op *op, struct pt_regs *regs,
> case 19:
> switch ((instr >> 1) & 0x3ff) {
> case 0: /* mcrf */
> - rd = (instr >> 21) & 0x1c;
> - ra = (instr >> 16) & 0x1c;
> + rd = 7 - ((instr >> 23) & 0x7);
> + ra = 7 - ((instr >> 18) & 0x7);
> + rd *= 4;
> + ra *= 4;
> val = (regs->ccr >> ra) & 0xf;
> regs->ccr = (regs->ccr & ~(0xfUL << rd)) | (val << rd);
> goto instr_done;
> --
> 2.11.0
>
More information about the Linuxppc-dev
mailing list