/* header to be included in non-HAX-specific code */
#ifndef _HAX_H
#define _HAX_H

#include "config.h"
#include "qemu-common.h"
#include "cpu.h"

extern int hax_disabled;
struct hax_vcpu_state;

#ifdef CONFIG_HAX
int hax_enabled(void);
int hax_get_max_ram(uint64_t* max_ram);
int hax_set_ramsize(uint64_t ramsize);
int hax_init(int smp_cpus);
int hax_init_vcpu(CPUState *cpu);
/* Execute vcpu in non-root mode */
int hax_vcpu_exec(CPUState *cpu);
/* Sync vcpu state with HAX driver */
int hax_sync_vcpus(void);
void hax_vcpu_sync_state(CPUState *cpu, int modified);
int hax_populate_ram(uint64_t va, uint32_t size);
int hax_set_phys_mem(hwaddr start_addr,
                     ram_addr_t size, ram_addr_t phys_offset);
/* Check if QEMU need emulate guest execution */
int hax_vcpu_emulation_mode(CPUState *cpu);
int hax_stop_emulation(CPUState *cpu);
int hax_stop_translate(CPUState *cpu);
int hax_arch_get_registers(CPUState *cpu);
void hax_raise_event(CPUState *cpu);
void hax_reset_vcpu_state(void *opaque);

#include "target-i386/hax-interface.h"

#else
#define hax_enabled() (0)
#endif

#endif
