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

addrspace.h (1016B)


      1/*
      2 * Copyright (c) 2018 Virtuozzo International GmbH
      3 *
      4 * This work is licensed under the terms of the GNU GPL, version 2 or later.
      5 *
      6 */
      7
      8#ifndef ADDRSPACE_H
      9#define ADDRSPACE_H
     10
     11#include "qemu_elf.h"
     12
     13#define ELF2DMP_PAGE_BITS 12
     14#define ELF2DMP_PAGE_SIZE (1ULL << ELF2DMP_PAGE_BITS)
     15#define ELF2DMP_PFN_MASK (~(ELF2DMP_PAGE_SIZE - 1))
     16
     17#define INVALID_PA  UINT64_MAX
     18
     19struct pa_block {
     20    uint8_t *addr;
     21    uint64_t paddr;
     22    uint64_t size;
     23};
     24
     25struct pa_space {
     26    size_t block_nr;
     27    struct pa_block *block;
     28};
     29
     30struct va_space {
     31    uint64_t dtb;
     32    struct pa_space *ps;
     33};
     34
     35int pa_space_create(struct pa_space *ps, QEMU_Elf *qemu_elf);
     36void pa_space_destroy(struct pa_space *ps);
     37
     38void va_space_create(struct va_space *vs, struct pa_space *ps, uint64_t dtb);
     39void va_space_set_dtb(struct va_space *vs, uint64_t dtb);
     40void *va_space_resolve(struct va_space *vs, uint64_t va);
     41int va_space_rw(struct va_space *vs, uint64_t addr,
     42        void *buf, size_t size, int is_write);
     43
     44#endif /* ADDRSPACE_H */