On Thu, Feb 28, 2019 at 07:57:57PM -0300, Fabiano Rosas wrote: > This is in preparation for a refactoring of the kvm_handle_debug > function in the next patch. > > Signed-off-by: Fabiano Rosas <faro...@linux.ibm.com>
Nice cleanup regardless of anything else. Applied to ppc-for-4.0. > --- > target/ppc/kvm.c | 47 ++++++++++++++++++++++++++++------------------- > 1 file changed, 28 insertions(+), 19 deletions(-) > > diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c > index d01852fe31..941c4e7523 100644 > --- a/target/ppc/kvm.c > +++ b/target/ppc/kvm.c > @@ -1593,35 +1593,44 @@ void kvm_arch_update_guest_debug(CPUState *cs, struct > kvm_guest_debug *dbg) > } > } > > +static int kvm_handle_hw_breakpoint(CPUState *cs, > + struct kvm_debug_exit_arch *arch_info) > +{ > + int handle = 0; > + int n; > + int flag = 0; > + > + if (nb_hw_breakpoint + nb_hw_watchpoint > 0) { > + if (arch_info->status & KVMPPC_DEBUG_BREAKPOINT) { > + n = find_hw_breakpoint(arch_info->address, GDB_BREAKPOINT_HW); > + if (n >= 0) { > + handle = 1; > + } > + } else if (arch_info->status & (KVMPPC_DEBUG_WATCH_READ | > + KVMPPC_DEBUG_WATCH_WRITE)) { > + n = find_hw_watchpoint(arch_info->address, &flag); > + if (n >= 0) { > + handle = 1; > + cs->watchpoint_hit = &hw_watchpoint; > + hw_watchpoint.vaddr = hw_debug_points[n].addr; > + hw_watchpoint.flags = flag; > + } > + } > + } > + return handle; > +} > + > static int kvm_handle_debug(PowerPCCPU *cpu, struct kvm_run *run) > { > CPUState *cs = CPU(cpu); > CPUPPCState *env = &cpu->env; > struct kvm_debug_exit_arch *arch_info = &run->debug.arch; > int handle = 0; > - int n; > - int flag = 0; > > if (cs->singlestep_enabled) { > handle = 1; > } else if (arch_info->status) { > - if (nb_hw_breakpoint + nb_hw_watchpoint > 0) { > - if (arch_info->status & KVMPPC_DEBUG_BREAKPOINT) { > - n = find_hw_breakpoint(arch_info->address, > GDB_BREAKPOINT_HW); > - if (n >= 0) { > - handle = 1; > - } > - } else if (arch_info->status & (KVMPPC_DEBUG_WATCH_READ | > - KVMPPC_DEBUG_WATCH_WRITE)) { > - n = find_hw_watchpoint(arch_info->address, &flag); > - if (n >= 0) { > - handle = 1; > - cs->watchpoint_hit = &hw_watchpoint; > - hw_watchpoint.vaddr = hw_debug_points[n].addr; > - hw_watchpoint.flags = flag; > - } > - } > - } > + handle = kvm_handle_hw_breakpoint(cs, arch_info); > } else if (kvm_find_sw_breakpoint(cs, arch_info->address)) { > handle = 1; > } else { -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
signature.asc
Description: PGP signature