diff options
author | Sandipan Das <sandipan@linux.ibm.com> | 2019-02-22 12:23:30 +0530 |
---|---|---|
committer | Michael Ellerman <mpe@ellerman.id.au> | 2019-02-26 00:05:18 +1100 |
commit | 3e751acba2658d664dc593d284714073c38380a8 (patch) | |
tree | 7c559ffb8c31fc5d07db24feccc8ef740bdfbc4c /arch/powerpc | |
parent | 32628b5cf3bcdf31d7e00b0e8229051ee2afe96e (diff) |
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>
Diffstat (limited to 'arch/powerpc')
-rw-r--r-- | arch/powerpc/lib/sstep.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/arch/powerpc/lib/sstep.c b/arch/powerpc/lib/sstep.c index 94189da4c159..742298bdf30b 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__ */ /* |