Re: [PATCH v2 1/3] powerpc: sstep: Fix load and update emulation
From: Michael Ellerman <mpe@ellerman.id.au>
Date: 2021-02-04 00:54:54
Sandipan Das [off-list ref] writes:
quoted hunk ↗ jump to hunk
On 03/02/21 3:19 pm, Naveen N. Rao wrote:quoted
[...] Wouldn't it be easier to just do the below at the end? Or, am I missing something?diff --git a/arch/powerpc/lib/sstep.c b/arch/powerpc/lib/sstep.c index ede093e9623472..a2d726d2a5e9d1 100644 --- a/arch/powerpc/lib/sstep.c +++ b/arch/powerpc/lib/sstep.c@@ -2980,6 +2980,10 @@ int analyse_instr(struct instruction_op *op, const struct pt_regs *regs, } #endif /* CONFIG_VSX */ + if (GETTYPE(op->type) == LOAD && (op->type & UPDATE) && + (ra == 0 || ra == rd)) + goto unknown_opcode; + return 0; logical_done:This looks good?diff --git a/arch/powerpc/lib/sstep.c b/arch/powerpc/lib/sstep.c index e96cff845ef7..a9c149bfd2f5 100644 --- a/arch/powerpc/lib/sstep.c +++ b/arch/powerpc/lib/sstep.c@@ -3017,6 +3017,21 @@ int analyse_instr(struct instruction_op *op, const struct pt_regs *regs, } + if (op->type & UPDATE) { + if (ra == rd && GETTYPE(op->type) == LOAD) + goto unknown_opcode; + else if (ra == 0) + switch(GETTYPE(op->type)) { + case LOAD: + case STORE: +#ifdef CONFIG_PPC_FPU + case LOAD_FP: + case STORE_FP: +#endif
Why make it conditional? cheers