cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

hvf_int.h (1456B)


      1/*
      2 * QEMU Hypervisor.framework (HVF) support
      3 *
      4 * This work is licensed under the terms of the GNU GPL, version 2 or later.
      5 * See the COPYING file in the top-level directory.
      6 *
      7 */
      8
      9/* header to be included in HVF-specific code */
     10
     11#ifndef HVF_INT_H
     12#define HVF_INT_H
     13
     14#ifdef __aarch64__
     15#include <Hypervisor/Hypervisor.h>
     16#else
     17#include <Hypervisor/hv.h>
     18#endif
     19
     20/* hvf_slot flags */
     21#define HVF_SLOT_LOG (1 << 0)
     22
     23typedef struct hvf_slot {
     24    uint64_t start;
     25    uint64_t size;
     26    uint8_t *mem;
     27    int slot_id;
     28    uint32_t flags;
     29    MemoryRegion *region;
     30} hvf_slot;
     31
     32typedef struct hvf_vcpu_caps {
     33    uint64_t vmx_cap_pinbased;
     34    uint64_t vmx_cap_procbased;
     35    uint64_t vmx_cap_procbased2;
     36    uint64_t vmx_cap_entry;
     37    uint64_t vmx_cap_exit;
     38    uint64_t vmx_cap_preemption_timer;
     39} hvf_vcpu_caps;
     40
     41struct HVFState {
     42    AccelState parent;
     43    hvf_slot slots[32];
     44    int num_slots;
     45
     46    hvf_vcpu_caps *hvf_caps;
     47    uint64_t vtimer_offset;
     48};
     49extern HVFState *hvf_state;
     50
     51struct hvf_vcpu_state {
     52    uint64_t fd;
     53    void *exit;
     54    bool vtimer_masked;
     55    sigset_t unblock_ipi_mask;
     56};
     57
     58void assert_hvf_ok(hv_return_t ret);
     59int hvf_arch_init(void);
     60int hvf_arch_init_vcpu(CPUState *cpu);
     61void hvf_arch_vcpu_destroy(CPUState *cpu);
     62int hvf_vcpu_exec(CPUState *);
     63hvf_slot *hvf_find_overlap_slot(uint64_t, uint64_t);
     64int hvf_put_registers(CPUState *);
     65int hvf_get_registers(CPUState *);
     66void hvf_kick_vcpu_thread(CPUState *cpu);
     67
     68#endif