Message ID | 20200320051809.24332-17-jniethe5@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Initial Prefixed Instruction support | expand |
Context | Check | Description |
---|---|---|
snowpatch_ozlabs/apply_patch | warning | Failed to apply on branch powerpc/merge (8a445cbcb9f5090cb07ec6cbb89a8a1fc99a0ff7) |
snowpatch_ozlabs/apply_patch | warning | Failed to apply on branch powerpc/next (59ed2adf393109c56d383e568f2e57bb5ad6d901) |
snowpatch_ozlabs/apply_patch | warning | Failed to apply on branch linus/master (6c90b86a745a446717fdf408c4a8a4631a5e8ee3) |
snowpatch_ozlabs/apply_patch | warning | Failed to apply on branch powerpc/fixes (af3d0a68698c7e5df8b72267086b23422a3954bb) |
snowpatch_ozlabs/apply_patch | warning | Failed to apply on branch linux-next (aff7e57f8266549245eb4a272ce149b752dfce77) |
snowpatch_ozlabs/apply_patch | fail | Failed to apply to any branch |
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 <jniethe5@gmail.com> Reviewed-by: Balamuruhan S <bala24@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;
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;
This adds emulation support for the following prefixed Fixed-Point Arithmetic instructions: * Prefixed Add Immediate (paddi) Signed-off-by: Jordan Niethe <jniethe5@gmail.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(+)