diff options
author | Jan Kiszka <jan.kiszka@siemens.com> | 2008-12-15 13:48:27 +0100 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2008-12-17 14:21:17 +0200 |
commit | c2fcf85c448abf4c8a71cc8c5eec758b3b4098ec (patch) | |
tree | f424fccda36a79919ba2439070e8912478c5b6aa /qemu-kvm-ia64.c | |
parent | 17ec0be8e8b75f1007ad1d00c4f4a3256bc597c4 (diff) |
Switch to new guest debug interface
This patch switches both libkvm as well as the qemu pieces over to the
new guest debug interface. It comes with full support for software-based
breakpoints (via guest code modification), hardware-assisted breakpoints
and watchpoints (x86-only so far).
Breakpoint management is done inside qemu-kvm, transparently to gdbstub
and also avoiding that the gdb frontend takes over. This allows for
running debuggers inside the guest while guest debugging it active,
because the host can cleanly tell apart host- and guest-originated
breakpoint events.
Yet improvable are x86 corner cases when using single-step ("forgotten"
debug flags on the guest's stack). And, of course, the yet empty non-x86
helper functions have to be populated.
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'qemu-kvm-ia64.c')
-rw-r--r-- | qemu-kvm-ia64.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/qemu-kvm-ia64.c b/qemu-kvm-ia64.c index 8cd3cffa5..f9e4b4b17 100644 --- a/qemu-kvm-ia64.c +++ b/qemu-kvm-ia64.c @@ -61,6 +61,43 @@ void kvm_arch_update_regs_for_sipi(CPUState *env) { } +int kvm_arch_insert_sw_breakpoint(CPUState *current_env, + struct kvm_sw_breakpoint *bp) +{ + return -EINVAL; +} + +int kvm_arch_remove_sw_breakpoint(CPUState *current_env, + struct kvm_sw_breakpoint *bp) +{ + return -EINVAL; +} + +int kvm_arch_insert_hw_breakpoint(target_ulong addr, + target_ulong len, int type) +{ + return -ENOSYS; +} + +int kvm_arch_remove_hw_breakpoint(target_ulong addr, + target_ulong len, int type) +{ + return -ENOSYS; +} + +void kvm_arch_remove_all_hw_breakpoints(void) +{ +} + +int kvm_arch_debug(struct kvm_debug_exit_arch *arch_info) +{ + return 0; +} + +void kvm_arch_update_guest_debug(CPUState *env, struct kvm_guest_debug *dbg) +{ +} + void kvm_save_mpstate(CPUState *env) { #ifdef KVM_CAP_MP_STATE |