[PATCH 2/6] powerpc sstep: Add darn instruction emulation

Michael Ellerman mpe at ellerman.id.au
Wed Feb 20 11:50:28 AEDT 2019


Sandipan Das <sandipan at linux.ibm.com> writes:

> This adds emulation support for the following integer instructions:
>   * Deliver A Random Number (darn)

This doesn't build with old binutils. We need to support old binutils.

    {standard input}:4343: Error: Unrecognized opcode: `darn'


You need to use PPC_DARN().

cheers

> diff --git a/arch/powerpc/lib/sstep.c b/arch/powerpc/lib/sstep.c
> index b40ec18515bd..18ac0a26c4fc 100644
> --- a/arch/powerpc/lib/sstep.c
> +++ b/arch/powerpc/lib/sstep.c
> @@ -1728,6 +1728,25 @@ int analyse_instr(struct instruction_op *op, const struct pt_regs *regs,
>  				(int) regs->gpr[rb];
>  			goto arith_done;
>  
> +		case 755:	/* darn */
> +			if (!cpu_has_feature(CPU_FTR_ARCH_300))
> +				return -1;
> +			switch (ra & 0x3) {
> +			case 0:
> +				asm("darn %0,0" : "=r" (op->val));
> +				goto compute_done;
> +
> +			case 1:
> +				asm("darn %0,1" : "=r" (op->val));
> +				goto compute_done;
> +
> +			case 2:
> +				asm("darn %0,2" : "=r" (op->val));
> +				goto compute_done;
> +			}
> +
> +			return -1;
> +
>  
>  /*
>   * Logical instructions
> -- 
> 2.14.4


More information about the Linuxppc-dev mailing list