/* * QEMU Hypervisor.framework support * * This work is licensed under the terms of the GNU GPL, version 2. See * the COPYING file in the top-level directory. * * Contributions after 2012-01-13 are licensed under the terms of the * GNU GPL, version 2 or (at your option) any later version. */ #include "qemu/osdep.h" #include "qemu/error-report.h" #include "sysemu/hvf.h" #include "sysemu/hvf_int.h" void assert_hvf_ok(hv_return_t ret) { if (ret == HV_SUCCESS) { return; } switch (ret) { case HV_ERROR: error_report("Error: HV_ERROR"); break; case HV_BUSY: error_report("Error: HV_BUSY"); break; case HV_BAD_ARGUMENT: error_report("Error: HV_BAD_ARGUMENT"); break; case HV_NO_RESOURCES: error_report("Error: HV_NO_RESOURCES"); break; case HV_NO_DEVICE: error_report("Error: HV_NO_DEVICE"); break; case HV_UNSUPPORTED: error_report("Error: HV_UNSUPPORTED"); break; #if defined(MAC_OS_VERSION_11_0) && \ MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_VERSION_11_0 case HV_DENIED: error_report("Error: HV_DENIED"); break; #endif default: error_report("Unknown Error"); } abort(); } struct hvf_sw_breakpoint *hvf_find_sw_breakpoint(CPUState *cpu, target_ulong pc) { struct hvf_sw_breakpoint *bp; QTAILQ_FOREACH(bp, &hvf_state->hvf_sw_breakpoints, entry) { if (bp->pc == pc) { return bp; } } return NULL; } int hvf_sw_breakpoints_active(CPUState *cpu) { return !QTAILQ_EMPTY(&hvf_state->hvf_sw_breakpoints); } int hvf_update_guest_debug(CPUState *cpu) { hvf_arch_update_guest_debug(cpu); return 0; }