]> Git Repo - linux.git/commit
powerpc: Change analyse_instr so it doesn't modify *regs
authorPaul Mackerras <[email protected]>
Wed, 30 Aug 2017 04:12:25 +0000 (14:12 +1000)
committerMichael Ellerman <[email protected]>
Fri, 1 Sep 2017 06:39:27 +0000 (16:39 +1000)
commit3cdfcbfd32b9d1c0d4a6fa80ee9c390927aab948
tree0da0c8effc769a79b2955065784e187c68b2547f
parent93b2d3cf3733b4060d3623161551f51ea1ab5499
powerpc: Change analyse_instr so it doesn't modify *regs

The analyse_instr function currently doesn't just work out what an
instruction does, it also executes those instructions whose effect
is only to update CPU registers that are stored in struct pt_regs.
This is undesirable because optprobes uses analyse_instr to work out
if an instruction could be successfully emulated in future.

This changes analyse_instr so it doesn't modify *regs; instead it
stores information in the instruction_op structure to indicate what
registers (GPRs, CR, XER, LR) would be set and what value they would
be set to.  A companion function called emulate_update_regs() can
then use that information to update a pt_regs struct appropriately.

As a minor cleanup, this replaces inline asm using the cntlzw and
cntlzd instructions with calls to __builtin_clz() and __builtin_clzl().

Signed-off-by: Paul Mackerras <[email protected]>
Signed-off-by: Michael Ellerman <[email protected]>
arch/powerpc/include/asm/sstep.h
arch/powerpc/lib/sstep.c
This page took 0.062662 seconds and 4 git commands to generate.