1/*
2 * QEMU Hardware accelertors support
3 *
4 * Copyright 2016 Google, Inc.
5 *
6 * This work is licensed under the terms of the GNU GPL, version 2 or later.
7 * See the COPYING file in the top-level directory.
8 *
9 */
10
11#ifndef QEMU_HW_ACCEL_H
12#define QEMU_HW_ACCEL_H
13
14#include "hw/core/cpu.h"
15#include "sysemu/hax.h"
16#include "sysemu/kvm.h"
17#include "sysemu/whpx.h"
18
19static inline void cpu_synchronize_state(CPUState *cpu)
20{
21 if (kvm_enabled()) {
22 kvm_cpu_synchronize_state(cpu);
23 }
24 if (hax_enabled()) {
25 hax_cpu_synchronize_state(cpu);
26 }
27 if (whpx_enabled()) {
28 whpx_cpu_synchronize_state(cpu);
29 }
30}
31
32static inline void cpu_synchronize_post_reset(CPUState *cpu)
33{
34 if (kvm_enabled()) {
35 kvm_cpu_synchronize_post_reset(cpu);
36 }
37 if (hax_enabled()) {
38 hax_cpu_synchronize_post_reset(cpu);
39 }
40 if (whpx_enabled()) {
41 whpx_cpu_synchronize_post_reset(cpu);
42 }
43}
44
45static inline void cpu_synchronize_post_init(CPUState *cpu)
46{
47 if (kvm_enabled()) {
48 kvm_cpu_synchronize_post_init(cpu);
49 }
50 if (hax_enabled()) {
51 hax_cpu_synchronize_post_init(cpu);
52 }
53 if (whpx_enabled()) {
54 whpx_cpu_synchronize_post_init(cpu);
55 }
56}
57
58static inline void cpu_synchronize_pre_loadvm(CPUState *cpu)
59{
60 if (kvm_enabled()) {
61 kvm_cpu_synchronize_pre_loadvm(cpu);
62 }
63 if (hax_enabled()) {
64 hax_cpu_synchronize_pre_loadvm(cpu);
65 }
66 if (whpx_enabled()) {
67 whpx_cpu_synchronize_pre_loadvm(cpu);
68 }
69}
70
71#endif /* QEMU_HW_ACCEL_H */
72