diff options
author | Paul Mackerras <paulus@ozlabs.org> | 2017-08-30 14:12:25 +1000 |
---|---|---|
committer | Michael Ellerman <mpe@ellerman.id.au> | 2017-09-01 16:39:27 +1000 |
commit | 3cdfcbfd32b9d1c0d4a6fa80ee9c390927aab948 (patch) | |
tree | 0da0c8effc769a79b2955065784e187c68b2547f /init | |
parent | 93b2d3cf3733b4060d3623161551f51ea1ab5499 (diff) |
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 <paulus@ozlabs.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'init')
0 files changed, 0 insertions, 0 deletions