[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-ppc] [PULL 14/60] target/ppc: Move handling of hardware breakpoint
From: |
David Gibson |
Subject: |
[Qemu-ppc] [PULL 14/60] target/ppc: Move handling of hardware breakpoints to a separate function |
Date: |
Sun, 10 Mar 2019 19:26:17 +1100 |
From: Fabiano Rosas <address@hidden>
This is in preparation for a refactoring of the kvm_handle_debug
function in the next patch.
Signed-off-by: Fabiano Rosas <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: David Gibson <address@hidden>
---
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 e0f0de0ce0..996b08a1d3 100644
--- a/target/ppc/kvm.c
+++ b/target/ppc/kvm.c
@@ -1597,35 +1597,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 {
--
2.20.1
- [Qemu-ppc] [PULL 05/60] target/ppc/spapr: Add SPAPR_CAP_LARGE_DECREMENTER, (continued)
- [Qemu-ppc] [PULL 05/60] target/ppc/spapr: Add SPAPR_CAP_LARGE_DECREMENTER, David Gibson, 2019/03/10
- [Qemu-ppc] [PULL 02/60] vfio/spapr: Rename local systempagesize variable, David Gibson, 2019/03/10
- [Qemu-ppc] [PULL 01/60] vfio/spapr: Fix indirect levels calculation, David Gibson, 2019/03/10
- [Qemu-ppc] [PULL 13/60] target/ppc: Move exception vector offset computation into a function, David Gibson, 2019/03/10
- [Qemu-ppc] [PULL 03/60] spapr: Simulate CAS for qtest, David Gibson, 2019/03/10
- [Qemu-ppc] [PULL 07/60] target/ppc: Implement large decrementer support for KVM, David Gibson, 2019/03/10
- [Qemu-ppc] [PULL 08/60] target/ppc/spapr: Enable the large decrementer for pseries-4.0, David Gibson, 2019/03/10
- [Qemu-ppc] [PULL 09/60] target/ppc/spapr: Add workaround option to SPAPR_CAP_IBS, David Gibson, 2019/03/10
- [Qemu-ppc] [PULL 11/60] target/ppc/tcg: make spapr_caps apply cap-[cfpc/sbbc/ibs] non-fatal for tcg, David Gibson, 2019/03/10
- [Qemu-ppc] [PULL 12/60] target/ppc/spapr: Enable mitigations by default for pseries-4.0 machine type, David Gibson, 2019/03/10
- [Qemu-ppc] [PULL 14/60] target/ppc: Move handling of hardware breakpoints to a separate function,
David Gibson <=
- [Qemu-ppc] [PULL 10/60] target/ppc/spapr: Add SPAPR_CAP_CCF_ASSIST, David Gibson, 2019/03/10
- [Qemu-ppc] [PULL 18/60] spapr: Force SPAPR_MEMORY_BLOCK_SIZE to be a hwaddr (64-bit), David Gibson, 2019/03/10
- [Qemu-ppc] [PULL 06/60] target/ppc: Implement large decrementer support for TCG, David Gibson, 2019/03/10
- [Qemu-ppc] [PULL 22/60] ppc: externalize ppc_get_vcpu_by_pir(), David Gibson, 2019/03/10
- [Qemu-ppc] [PULL 21/60] ppc/xive: hardwire the Physical CAM line of the thread context, David Gibson, 2019/03/10
- [Qemu-ppc] [PULL 15/60] target/ppc: Refactor kvm_handle_debug, David Gibson, 2019/03/10
- [Qemu-ppc] [PULL 29/60] ppc/xive: activate HV support, David Gibson, 2019/03/10
- [Qemu-ppc] [PULL 19/60] target/ppc/spapr: Enable H_PAGE_INIT in-kernel handling, David Gibson, 2019/03/10
- [Qemu-ppc] [PULL 17/60] target/ppc/spapr: Clear partition table entry when allocating hash table, David Gibson, 2019/03/10
- [Qemu-ppc] [PULL 25/60] ppc/pnv: change the CPU machine_data presenter type to Object *, David Gibson, 2019/03/10