diff options
author | Claudio Fontana <cfontana@suse.de> | 2020-12-12 16:55:10 +0100 |
---|---|---|
committer | Eduardo Habkost <ehabkost@redhat.com> | 2020-12-16 14:06:53 -0500 |
commit | 7fdef0d4f240208daf973e85ba1d498242e4fefc (patch) | |
tree | 1a0fd70be9674fd204c4ec174f13eaf3d156f9fa /target/i386/hax/hax-i386.h | |
parent | 1fc33bb9f05b2c263232ab01dd66d6e33d31cedc (diff) | |
download | qemu-7fdef0d4f240208daf973e85ba1d498242e4fefc.zip qemu-7fdef0d4f240208daf973e85ba1d498242e4fefc.tar.gz qemu-7fdef0d4f240208daf973e85ba1d498242e4fefc.tar.bz2 |
i386: move hax accel files into hax/
Signed-off-by: Claudio Fontana <cfontana@suse.de>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20201212155530.23098-4-cfontana@suse.de>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Diffstat (limited to 'target/i386/hax/hax-i386.h')
-rw-r--r-- | target/i386/hax/hax-i386.h | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/target/i386/hax/hax-i386.h b/target/i386/hax/hax-i386.h new file mode 100644 index 0000000..efbb346 --- /dev/null +++ b/target/i386/hax/hax-i386.h @@ -0,0 +1,96 @@ +/* + * QEMU HAXM support + * + * Copyright (c) 2011 Intel Corporation + * Written by: + * Jiang Yunhong<yunhong.jiang@intel.com> + * + * This work is licensed under the terms of the GNU GPL, version 2 or later. + * See the COPYING file in the top-level directory. + * + */ + +#ifndef HAX_I386_H +#define HAX_I386_H + +#include "cpu.h" +#include "sysemu/hax.h" + +#ifdef CONFIG_POSIX +typedef int hax_fd; +#endif + +#ifdef CONFIG_WIN32 +typedef HANDLE hax_fd; +#endif + +extern struct hax_state hax_global; +struct hax_vcpu_state { + hax_fd fd; + int vcpu_id; + struct hax_tunnel *tunnel; + unsigned char *iobuf; +}; + +struct hax_state { + hax_fd fd; /* the global hax device interface */ + uint32_t version; + struct hax_vm *vm; + uint64_t mem_quota; + bool supports_64bit_ramblock; +}; + +#define HAX_MAX_VCPU 0x10 + +struct hax_vm { + hax_fd fd; + int id; + int numvcpus; + struct hax_vcpu_state **vcpus; +}; + +#ifdef NEED_CPU_H +/* Functions exported to host specific mode */ +hax_fd hax_vcpu_get_fd(CPUArchState *env); +int valid_hax_tunnel_size(uint16_t size); + +/* Host specific functions */ +int hax_mod_version(struct hax_state *hax, struct hax_module_version *version); +int hax_inject_interrupt(CPUArchState *env, int vector); +struct hax_vm *hax_vm_create(struct hax_state *hax, int max_cpus); +int hax_vcpu_run(struct hax_vcpu_state *vcpu); +int hax_vcpu_create(int id); +void hax_kick_vcpu_thread(CPUState *cpu); + +int hax_sync_vcpu_state(CPUArchState *env, struct vcpu_state_t *state, + int set); +int hax_sync_msr(CPUArchState *env, struct hax_msr_data *msrs, int set); +int hax_sync_fpu(CPUArchState *env, struct fx_layout *fl, int set); +#endif + +int hax_vm_destroy(struct hax_vm *vm); +int hax_capability(struct hax_state *hax, struct hax_capabilityinfo *cap); +int hax_notify_qemu_version(hax_fd vm_fd, struct hax_qemu_version *qversion); +int hax_set_ram(uint64_t start_pa, uint32_t size, uint64_t host_va, int flags); + +/* Common host function */ +int hax_host_create_vm(struct hax_state *hax, int *vm_id); +hax_fd hax_host_open_vm(struct hax_state *hax, int vm_id); +int hax_host_create_vcpu(hax_fd vm_fd, int vcpuid); +hax_fd hax_host_open_vcpu(int vmid, int vcpuid); +int hax_host_setup_vcpu_channel(struct hax_vcpu_state *vcpu); +hax_fd hax_mod_open(void); +void hax_memory_init(void); + + +#ifdef CONFIG_POSIX +#include "hax-posix.h" +#endif + +#ifdef CONFIG_WIN32 +#include "hax-windows.h" +#endif + +#include "hax-interface.h" + +#endif |