1a381ef07088ce479610129e37bfef42538f397daJun Nakajima/* header to be included in non-HAX-specific code */
2a381ef07088ce479610129e37bfef42538f397daJun Nakajima#ifndef _HAX_H
3a381ef07088ce479610129e37bfef42538f397daJun Nakajima#define _HAX_H
4a381ef07088ce479610129e37bfef42538f397daJun Nakajima
5a381ef07088ce479610129e37bfef42538f397daJun Nakajima#include "config.h"
6a381ef07088ce479610129e37bfef42538f397daJun Nakajima#include "qemu-common.h"
7a381ef07088ce479610129e37bfef42538f397daJun Nakajima#include "cpu.h"
8a381ef07088ce479610129e37bfef42538f397daJun Nakajima
9a381ef07088ce479610129e37bfef42538f397daJun Nakajimaextern int hax_disabled;
10a381ef07088ce479610129e37bfef42538f397daJun Nakajimastruct hax_vcpu_state;
11a381ef07088ce479610129e37bfef42538f397daJun Nakajima
12a381ef07088ce479610129e37bfef42538f397daJun Nakajima#ifdef CONFIG_HAX
13a381ef07088ce479610129e37bfef42538f397daJun Nakajimaint hax_enabled(void);
144a5a0efd49f100c7d53920807c83d9c74304ecd8Jiang, Yunhongint hax_set_ramsize(uint64_t ramsize);
15a381ef07088ce479610129e37bfef42538f397daJun Nakajimaint hax_init(int smp_cpus);
167f38c7f905384c064b88fbdfa2eb054a92be63f3David 'Digit' Turnerint hax_init_vcpu(CPUState *cpu);
17a381ef07088ce479610129e37bfef42538f397daJun Nakajima/* Execute vcpu in non-root mode */
187f38c7f905384c064b88fbdfa2eb054a92be63f3David 'Digit' Turnerint hax_vcpu_exec(CPUState *cpu);
19a381ef07088ce479610129e37bfef42538f397daJun Nakajima/* Sync vcpu state with HAX driver */
20a381ef07088ce479610129e37bfef42538f397daJun Nakajimaint hax_sync_vcpus(void);
217f38c7f905384c064b88fbdfa2eb054a92be63f3David 'Digit' Turnervoid hax_vcpu_sync_state(CPUState *cpu, int modified);
22a381ef07088ce479610129e37bfef42538f397daJun Nakajimaint hax_populate_ram(uint64_t va, uint32_t size);
23bcde1092aca184dbd7860078af020de7d1e4e22fDavid 'Digit' Turnerint hax_set_phys_mem(hwaddr start_addr,
24a381ef07088ce479610129e37bfef42538f397daJun Nakajima                     ram_addr_t size, ram_addr_t phys_offset);
25a381ef07088ce479610129e37bfef42538f397daJun Nakajima/* Check if QEMU need emulate guest execution */
267f38c7f905384c064b88fbdfa2eb054a92be63f3David 'Digit' Turnerint hax_vcpu_emulation_mode(CPUState *cpu);
277f38c7f905384c064b88fbdfa2eb054a92be63f3David 'Digit' Turnerint hax_stop_emulation(CPUState *cpu);
287f38c7f905384c064b88fbdfa2eb054a92be63f3David 'Digit' Turnerint hax_stop_translate(CPUState *cpu);
297f38c7f905384c064b88fbdfa2eb054a92be63f3David 'Digit' Turnerint hax_arch_get_registers(CPUState *cpu);
307f38c7f905384c064b88fbdfa2eb054a92be63f3David 'Digit' Turnervoid hax_raise_event(CPUState *cpu);
31a381ef07088ce479610129e37bfef42538f397daJun Nakajimavoid hax_reset_vcpu_state(void *opaque);
32a381ef07088ce479610129e37bfef42538f397daJun Nakajima
33a381ef07088ce479610129e37bfef42538f397daJun Nakajima#include "target-i386/hax-interface.h"
34a381ef07088ce479610129e37bfef42538f397daJun Nakajima
35a381ef07088ce479610129e37bfef42538f397daJun Nakajima#else
36a381ef07088ce479610129e37bfef42538f397daJun Nakajima#define hax_enabled() (0)
37a381ef07088ce479610129e37bfef42538f397daJun Nakajima#endif
38a381ef07088ce479610129e37bfef42538f397daJun Nakajima
39a381ef07088ce479610129e37bfef42538f397daJun Nakajima#endif
40