On Fri, 2020-03-20 at 16:18 +1100, Jordan Niethe wrote:
> This adds emulation support for the following prefixed Fixed-Point
> Arithmetic instructions:
>   * Prefixed Add Immediate (paddi)
> 
> Signed-off-by: Jordan Niethe <jniet...@gmail.com>

Reviewed-by: Balamuruhan S <bal...@linux.ibm.com>

> ---
> v3: Since we moved the prefixed loads/stores into the load/store switch
> statement it no longer makes sense to have paddi in there, so move it
> out.
> ---
>  arch/powerpc/lib/sstep.c | 20 ++++++++++++++++++++
>  1 file changed, 20 insertions(+)
> 
> diff --git a/arch/powerpc/lib/sstep.c b/arch/powerpc/lib/sstep.c
> index daef70eb8e22..6862fc019258 100644
> --- a/arch/powerpc/lib/sstep.c
> +++ b/arch/powerpc/lib/sstep.c
> @@ -1335,6 +1335,26 @@ int analyse_instr(struct instruction_op *op, const
> struct pt_regs *regs,
>  
>       switch (opcode) {
>  #ifdef __powerpc64__
> +     case 1:
> +             prefix_r = word & (1ul << 20);
> +             ra = (suffix >> 16) & 0x1f;
> +             rd = (suffix >> 21) & 0x1f;
> +             op->reg = rd;
> +             op->val = regs->gpr[rd];
> +             suffixopcode = suffix >> 26;
> +             prefixtype = (word >> 24) & 0x3;
> +             switch (prefixtype) {
> +             case 2:
> +                     if (prefix_r && ra)
> +                             return 0;
> +                     switch (suffixopcode) {
> +                     case 14:        /* paddi */
> +                             op->type = COMPUTE | PREFIXED;
> +                             op->val = mlsd_8lsd_ea(word, suffix, regs);
> +                             goto compute_done;
> +                     }
> +             }
> +             break;
>       case 2:         /* tdi */
>               if (rd & trap_compare(regs->gpr[ra], (short) word))
>                       goto trap;

Reply via email to