[PATCH v2] powerpc: sstep.c: Add modsw, moduw instruction emulation

Naveen N. Rao naveen.n.rao at linux.vnet.ibm.com
Tue Dec 13 17:03:02 AEDT 2016


On 2016/12/07 11:15PM, PrasannaKumar Muralidharan wrote:
> Add modsw and moduw instruction emulation support to analyse_instr.
> modsw is an x-form instruction that calculates signed modulo of values
> stored in registers. moduw is similar to modsw but it works with
> unsigned values.
> 
> Changes in v2:
> Don't update CR register as the instruction does not touch that
> Arrange extended opcode in numerical order

This changelog should come after '---' below so that it doesn't get 
included in the commit message.

Apart from that, for this patch:
Reviewed-by: Naveen N. Rao <naveen.n.rao at linux.vnet.ibm.com>


Thanks!

> 
> Signed-off-by: PrasannaKumar Muralidharan <prasannatsmkumar at gmail.com>
> ---
>  arch/powerpc/lib/sstep.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
> 
> diff --git a/arch/powerpc/lib/sstep.c b/arch/powerpc/lib/sstep.c
> index 9c78a9c..b0acdbc 100644
> --- a/arch/powerpc/lib/sstep.c
> +++ b/arch/powerpc/lib/sstep.c
> @@ -1128,6 +1128,11 @@ int __kprobes analyse_instr(struct instruction_op *op, struct pt_regs *regs,
>  		case 266:	/* add */
>  			regs->gpr[rd] = regs->gpr[ra] + regs->gpr[rb];
>  			goto arith_done;
> +
> +		case 267:	/* moduw */
> +			regs->gpr[rd] = (unsigned int) regs->gpr[ra] %
> +				(unsigned int) regs->gpr[rb];
> +			goto instr_done;
>  #ifdef __powerpc64__
>  		case 457:	/* divdu */
>  			regs->gpr[rd] = regs->gpr[ra] / regs->gpr[rb];
> @@ -1148,6 +1153,10 @@ int __kprobes analyse_instr(struct instruction_op *op, struct pt_regs *regs,
>  				(int) regs->gpr[rb];
>  			goto arith_done;
> 
> +		case 779:	/* modsw */
> +			regs->gpr[rd] = (int) regs->gpr[ra] %
> +				(int) regs->gpr[rb];
> +			goto instr_done;
> 
>  /*
>   * Logical instructions
> -- 
> 2.9.3
> 



More information about the Linuxppc-dev mailing list