Commit 2cbd1581 authored by Fabiano Rosas's avatar Fabiano Rosas Committed by David Gibson
Browse files

target/ppc: Move handling of hardware breakpoints to a separate function



This is in preparation for a refactoring of the kvm_handle_debug
function in the next patch.

Signed-off-by: default avatarFabiano Rosas <farosas@linux.ibm.com>
Message-Id: <20190228225759.21328-4-farosas@linux.ibm.com>
Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
parent 2586a4d7
Loading
Loading
Loading
Loading
+28 −19
Original line number Diff line number Diff line
@@ -1597,18 +1597,13 @@ void kvm_arch_update_guest_debug(CPUState *cs, struct kvm_guest_debug *dbg)
    }
}

static int kvm_handle_debug(PowerPCCPU *cpu, struct kvm_run *run)
static int kvm_handle_hw_breakpoint(CPUState *cs,
                                    struct kvm_debug_exit_arch *arch_info)
{
    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);
@@ -1626,6 +1621,20 @@ static int kvm_handle_debug(PowerPCCPU *cpu, struct kvm_run *run)
            }
        }
    }
    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;

    if (cs->singlestep_enabled) {
        handle = 1;
    } else if (arch_info->status) {
        handle = kvm_handle_hw_breakpoint(cs, arch_info);
    } else if (kvm_find_sw_breakpoint(cs, arch_info->address)) {
        handle = 1;
    } else {