summaryrefslogtreecommitdiff
path: root/init
diff options
context:
space:
mode:
authorPaul Mackerras <paulus@ozlabs.org>2017-08-30 14:12:25 +1000
committerMichael Ellerman <mpe@ellerman.id.au>2017-09-01 16:39:27 +1000
commit3cdfcbfd32b9d1c0d4a6fa80ee9c390927aab948 (patch)
tree0da0c8effc769a79b2955065784e187c68b2547f /init
parent93b2d3cf3733b4060d3623161551f51ea1ab5499 (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