summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSandipan Das <sandipan@linux.ibm.com>2019-02-22 12:23:30 +0530
committerMichael Ellerman <mpe@ellerman.id.au>2019-02-26 00:05:18 +1100
commit3e751acba2658d664dc593d284714073c38380a8 (patch)
tree7c559ffb8c31fc5d07db24feccc8ef740bdfbc4c
parent32628b5cf3bcdf31d7e00b0e8229051ee2afe96e (diff)
downloadlinux-0-day-3e751acba2658d664dc593d284714073c38380a8.tar.gz
linux-0-day-3e751acba2658d664dc593d284714073c38380a8.tar.xz
powerpc sstep: Add support for extswsli instruction
This adds emulation support for the following integer instructions: * Extend-Sign Word and Shift Left Immediate (extswsli[.]) Signed-off-by: Sandipan Das <sandipan@linux.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
-rw-r--r--arch/powerpc/lib/sstep.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/arch/powerpc/lib/sstep.c b/arch/powerpc/lib/sstep.c
index 94189da4c1592..742298bdf30bf 100644
--- a/arch/powerpc/lib/sstep.c
+++ b/arch/powerpc/lib/sstep.c
@@ -1935,6 +1935,20 @@ int analyse_instr(struct instruction_op *op, const struct pt_regs *regs,
op->xerval &= ~XER_CA;
set_ca32(op, op->xerval & XER_CA);
goto logical_done;
+
+ case 890: /* extswsli with sh_5 = 0 */
+ case 891: /* extswsli with sh_5 = 1 */
+ if (!cpu_has_feature(CPU_FTR_ARCH_300))
+ return -1;
+ op->type = COMPUTE + SETREG;
+ sh = rb | ((instr & 2) << 4);
+ val = (signed int) regs->gpr[rd];
+ if (sh)
+ op->val = ROTATE(val, sh) & MASK64(0, 63 - sh);
+ else
+ op->val = val;
+ goto logical_done;
+
#endif /* __powerpc64__ */
/*