mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-22 00:40:03 +00:00
powerpc sstep: Add support for prefixed fixed-point arithmetic
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> [mpe: Squash in get_op() usage] Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20200506034050.24806-31-jniethe5@gmail.com
This commit is contained in:
parent
50b80a12e4
commit
3920742b92
1 changed files with 20 additions and 0 deletions
|
@ -1338,6 +1338,26 @@ int analyse_instr(struct instruction_op *op, const struct pt_regs *regs,
|
||||||
|
|
||||||
switch (opcode) {
|
switch (opcode) {
|
||||||
#ifdef __powerpc64__
|
#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 = get_op(suffix);
|
||||||
|
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 */
|
case 2: /* tdi */
|
||||||
if (rd & trap_compare(regs->gpr[ra], (short) word))
|
if (rd & trap_compare(regs->gpr[ra], (short) word))
|
||||||
goto trap;
|
goto trap;
|
||||||
|
|
Loading…
Reference in a new issue