Searched hist:"3 cdfcbfd32b9d1c0d4a6fa80ee9c390927aab948" (Results 1 – 2 of 2) sorted by relevance
/linux/arch/powerpc/include/asm/ |
H A D | sstep.h | diff 3cdfcbfd32b9d1c0d4a6fa80ee9c390927aab948 Wed Aug 30 06:12:25 CEST 2017 Paul Mackerras <paulus@ozlabs.org> 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>
|
/linux/arch/powerpc/lib/ |
H A D | sstep.c | diff 3cdfcbfd32b9d1c0d4a6fa80ee9c390927aab948 Wed Aug 30 06:12:25 CEST 2017 Paul Mackerras <paulus@ozlabs.org> 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>
|