mirror of
https://gitee.com/bianbu-linux/linux-6.6
synced 2025-07-01 23:53:16 -04:00
powerpc: sstep: Add support for darn instruction
This adds emulation support for the following integer instructions: * Deliver A Random Number (darn) As suggested by Michael, this uses a raw .long for specifying the instruction word when using inline assembly to retain compatibility with older binutils. Signed-off-by: Sandipan Das <sandipan@linux.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
parent
930d6288a2
commit
a23987ef26
1 changed files with 22 additions and 0 deletions
|
@ -1728,6 +1728,28 @@ int analyse_instr(struct instruction_op *op, const struct pt_regs *regs,
|
||||||
(int) regs->gpr[rb];
|
(int) regs->gpr[rb];
|
||||||
goto arith_done;
|
goto arith_done;
|
||||||
|
|
||||||
|
case 755: /* darn */
|
||||||
|
if (!cpu_has_feature(CPU_FTR_ARCH_300))
|
||||||
|
return -1;
|
||||||
|
switch (ra & 0x3) {
|
||||||
|
case 0:
|
||||||
|
/* 32-bit conditioned */
|
||||||
|
asm volatile(PPC_DARN(%0, 0) : "=r" (op->val));
|
||||||
|
goto compute_done;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
/* 64-bit conditioned */
|
||||||
|
asm volatile(PPC_DARN(%0, 1) : "=r" (op->val));
|
||||||
|
goto compute_done;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
/* 64-bit raw */
|
||||||
|
asm volatile(PPC_DARN(%0, 2) : "=r" (op->val));
|
||||||
|
goto compute_done;
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Logical instructions
|
* Logical instructions
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue