Headers in include/sysemu/ are not only related to system *emulation*, they are also used by virtualization. Rename as system/ which is clearer. Files renamed manually then mechanical change using sed tool. Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Tested-by: Lei Yang <leiyang@redhat.com> Message-Id: <20241203172445.28576-1-philmd@linaro.org>
		
			
				
	
	
		
			78 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * QEMU Hypervisor.framework (HVF) support
 | 
						|
 *
 | 
						|
 * 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 HVF-specific code */
 | 
						|
 | 
						|
#ifndef HVF_INT_H
 | 
						|
#define HVF_INT_H
 | 
						|
 | 
						|
#ifdef __aarch64__
 | 
						|
#include <Hypervisor/Hypervisor.h>
 | 
						|
typedef hv_vcpu_t hvf_vcpuid;
 | 
						|
#else
 | 
						|
#include <Hypervisor/hv.h>
 | 
						|
typedef hv_vcpuid_t hvf_vcpuid;
 | 
						|
#endif
 | 
						|
 | 
						|
/* hvf_slot flags */
 | 
						|
#define HVF_SLOT_LOG (1 << 0)
 | 
						|
 | 
						|
typedef struct hvf_slot {
 | 
						|
    uint64_t start;
 | 
						|
    uint64_t size;
 | 
						|
    uint8_t *mem;
 | 
						|
    int slot_id;
 | 
						|
    uint32_t flags;
 | 
						|
    MemoryRegion *region;
 | 
						|
} hvf_slot;
 | 
						|
 | 
						|
typedef struct hvf_vcpu_caps {
 | 
						|
    uint64_t vmx_cap_pinbased;
 | 
						|
    uint64_t vmx_cap_procbased;
 | 
						|
    uint64_t vmx_cap_procbased2;
 | 
						|
    uint64_t vmx_cap_entry;
 | 
						|
    uint64_t vmx_cap_exit;
 | 
						|
    uint64_t vmx_cap_preemption_timer;
 | 
						|
} hvf_vcpu_caps;
 | 
						|
 | 
						|
struct HVFState {
 | 
						|
    AccelState parent;
 | 
						|
    hvf_slot slots[32];
 | 
						|
    int num_slots;
 | 
						|
 | 
						|
    hvf_vcpu_caps *hvf_caps;
 | 
						|
    uint64_t vtimer_offset;
 | 
						|
    QTAILQ_HEAD(, hvf_sw_breakpoint) hvf_sw_breakpoints;
 | 
						|
};
 | 
						|
extern HVFState *hvf_state;
 | 
						|
 | 
						|
struct AccelCPUState {
 | 
						|
    hvf_vcpuid fd;
 | 
						|
    void *exit;
 | 
						|
    bool vtimer_masked;
 | 
						|
    sigset_t unblock_ipi_mask;
 | 
						|
    bool guest_debug_enabled;
 | 
						|
    bool dirty;
 | 
						|
};
 | 
						|
 | 
						|
void assert_hvf_ok_impl(hv_return_t ret, const char *file, unsigned int line,
 | 
						|
                        const char *exp);
 | 
						|
#define assert_hvf_ok(EX) assert_hvf_ok_impl((EX), __FILE__, __LINE__, #EX)
 | 
						|
const char *hvf_return_string(hv_return_t ret);
 | 
						|
int hvf_arch_init(void);
 | 
						|
hv_return_t hvf_arch_vm_create(MachineState *ms, uint32_t pa_range);
 | 
						|
int hvf_arch_init_vcpu(CPUState *cpu);
 | 
						|
void hvf_arch_vcpu_destroy(CPUState *cpu);
 | 
						|
int hvf_vcpu_exec(CPUState *);
 | 
						|
hvf_slot *hvf_find_overlap_slot(uint64_t, uint64_t);
 | 
						|
int hvf_put_registers(CPUState *);
 | 
						|
int hvf_get_registers(CPUState *);
 | 
						|
void hvf_kick_vcpu_thread(CPUState *cpu);
 | 
						|
 | 
						|
#endif
 |