[PATCH v2 1/2] powerpc/sstep: Add emulation support for ‘setb’ instruction
Naveen N. Rao
naveen.n.rao at linux.ibm.com
Mon May 17 23:34:02 AEST 2021
Sathvika Vasireddy wrote:
> This adds emulation support for the following instruction:
> * Set Boolean (setb)
>
> Signed-off-by: Sathvika Vasireddy <sathvika at linux.vnet.ibm.com>
> ---
> arch/powerpc/lib/sstep.c | 22 ++++++++++++++++++++++
> 1 file changed, 22 insertions(+)
Tested-by: Naveen N. Rao <naveen.n.rao at linux.vnet.ibm.com>
>
> diff --git a/arch/powerpc/lib/sstep.c b/arch/powerpc/lib/sstep.c
> index 45bda2520755..aee42bcc775b 100644
> --- a/arch/powerpc/lib/sstep.c
> +++ b/arch/powerpc/lib/sstep.c
> @@ -1700,6 +1700,28 @@ int analyse_instr(struct instruction_op *op, const struct pt_regs *regs,
> op->val = regs->ccr & imm;
> goto compute_done;
>
> + case 128: /* setb */
> + if (!cpu_has_feature(CPU_FTR_ARCH_300))
> + goto unknown_opcode;
> + /*
> + * 'ra' encodes the CR field number (bfa) in the top 3 bits.
> + * Since each CR field is 4 bits,
> + * we can simply mask off the bottom two bits (bfa * 4)
> + * to yield the first bit in the CR field.
> + */
> + ra = ra & ~0x3;
> + /* 'val' stores bits of the CR field (bfa) */
> + val = regs->ccr >> (CR0_SHIFT - ra);
> + /* checks if the LT bit of CR field (bfa) is set */
> + if (val & 8)
> + op->val = -1;
> + /* checks if the GT bit of CR field (bfa) is set */
> + else if (val & 4)
> + op->val = 1;
> + else
> + op->val = 0;
> + goto compute_done;
> +
> case 144: /* mtcrf */
> op->type = COMPUTE + SETCC;
> imm = 0xf0000000UL;
> --
> 2.16.4
>
>
More information about the Linuxppc-dev
mailing list