mirror of https://github.com/xqemu/xqemu.git
55 lines
1.6 KiB
C
55 lines
1.6 KiB
C
/*
|
|
* QEMU Hypervisor.framework (HVF) support
|
|
*
|
|
* Copyright Google Inc., 2017
|
|
*
|
|
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
|
* See the COPYING file in the top-level directory.
|
|
*
|
|
*/
|
|
|
|
/* header to be included in non-HVF-specific code */
|
|
#ifndef _HVF_H
|
|
#define _HVF_H
|
|
|
|
#include "qemu-common.h"
|
|
#include "qemu/bitops.h"
|
|
#include "exec/memory.h"
|
|
#include "sysemu/accel.h"
|
|
|
|
extern bool hvf_allowed;
|
|
#ifdef CONFIG_HVF
|
|
uint32_t hvf_get_supported_cpuid(uint32_t func, uint32_t idx,
|
|
int reg);
|
|
#define hvf_enabled() (hvf_allowed)
|
|
#else
|
|
#define hvf_enabled() 0
|
|
#define hvf_get_supported_cpuid(func, idx, reg) 0
|
|
#endif
|
|
|
|
/* Disable HVF if |disable| is 1, otherwise, enable it iff it is supported by
|
|
* the host CPU. Use hvf_enabled() after this to get the result. */
|
|
void hvf_disable(int disable);
|
|
|
|
/* Returns non-0 if the host CPU supports the VMX "unrestricted guest" feature
|
|
* which allows the virtual CPU to directly run in "real mode". If true, this
|
|
* allows QEMU to run several vCPU threads in parallel (see cpus.c). Otherwise,
|
|
* only a a single TCG thread can run, and it will call HVF to run the current
|
|
* instructions, except in case of "real mode" (paging disabled, typically at
|
|
* boot time), or MMIO operations. */
|
|
|
|
int hvf_sync_vcpus(void);
|
|
|
|
int hvf_init_vcpu(CPUState *);
|
|
int hvf_vcpu_exec(CPUState *);
|
|
int hvf_smp_cpu_exec(CPUState *);
|
|
void hvf_cpu_synchronize_state(CPUState *);
|
|
void hvf_cpu_synchronize_post_reset(CPUState *);
|
|
void hvf_cpu_synchronize_post_init(CPUState *);
|
|
|
|
void hvf_vcpu_destroy(CPUState *);
|
|
void hvf_reset_vcpu(CPUState *);
|
|
int hvf_put_registers(CPUState *);
|
|
|
|
#endif
|