From: PrasannaKumar Muralidharan Date: Fri, 22 Feb 2019 06:53:31 +0000 (+0530) Subject: powerpc sstep: Add support for modsw, moduw instructions X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=6c180071509aacb5989993b435e71e70500b72dd;p=openwrt%2Fstaging%2Fblogic.git powerpc sstep: Add support for modsw, moduw instructions This adds emulation support for the following integer instructions: * Modulo Signed Word (modsw) * Modulo Unsigned Word (moduw) Signed-off-by: PrasannaKumar Muralidharan Signed-off-by: Sandipan Das Signed-off-by: Michael Ellerman --- diff --git a/arch/powerpc/lib/sstep.c b/arch/powerpc/lib/sstep.c index 742298bdf30b..9c65fb1da298 100644 --- a/arch/powerpc/lib/sstep.c +++ b/arch/powerpc/lib/sstep.c @@ -1708,6 +1708,13 @@ int analyse_instr(struct instruction_op *op, const struct pt_regs *regs, case 266: /* add */ op->val = regs->gpr[ra] + regs->gpr[rb]; goto arith_done; + + case 267: /* moduw */ + if (!cpu_has_feature(CPU_FTR_ARCH_300)) + return -1; + op->val = (unsigned int) regs->gpr[ra] % + (unsigned int) regs->gpr[rb]; + goto compute_done; #ifdef __powerpc64__ case 457: /* divdu */ op->val = regs->gpr[ra] / regs->gpr[rb]; @@ -1750,6 +1757,13 @@ int analyse_instr(struct instruction_op *op, const struct pt_regs *regs, return -1; + case 779: /* modsw */ + if (!cpu_has_feature(CPU_FTR_ARCH_300)) + return -1; + op->val = (int) regs->gpr[ra] % + (int) regs->gpr[rb]; + goto compute_done; + /* * Logical instructions