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

vof.h (2023B)


      1/*
      2 * Virtual Open Firmware
      3 *
      4 * SPDX-License-Identifier: GPL-2.0-or-later
      5 */
      6#ifndef HW_VOF_H
      7#define HW_VOF_H
      8
      9typedef struct Vof {
     10    uint64_t top_addr; /* copied from rma_size */
     11    GArray *claimed; /* array of SpaprOfClaimed */
     12    uint64_t claimed_base;
     13    GHashTable *of_instances; /* ihandle -> SpaprOfInstance */
     14    uint32_t of_instance_last;
     15    char *bootargs;
     16    long fw_size;
     17} Vof;
     18
     19int vof_client_call(MachineState *ms, Vof *vof, void *fdt,
     20                    target_ulong args_real);
     21uint64_t vof_claim(Vof *vof, uint64_t virt, uint64_t size, uint64_t align);
     22void vof_init(Vof *vof, uint64_t top_addr, Error **errp);
     23void vof_cleanup(Vof *vof);
     24void vof_build_dt(void *fdt, Vof *vof);
     25uint32_t vof_client_open_store(void *fdt, Vof *vof, const char *nodename,
     26                               const char *prop, const char *path);
     27
     28#define TYPE_VOF_MACHINE_IF "vof-machine-if"
     29
     30typedef struct VofMachineIfClass VofMachineIfClass;
     31DECLARE_CLASS_CHECKERS(VofMachineIfClass, VOF_MACHINE, TYPE_VOF_MACHINE_IF)
     32
     33struct VofMachineIfClass {
     34    InterfaceClass parent;
     35    target_ulong (*client_architecture_support)(MachineState *ms, CPUState *cs,
     36                                                target_ulong vec);
     37    void (*quiesce)(MachineState *ms);
     38    bool (*setprop)(MachineState *ms, const char *path, const char *propname,
     39                    void *val, int vallen);
     40};
     41
     42/*
     43 * Initial stack size is from
     44 * https://www.devicetree.org/open-firmware/bindings/ppc/release/ppc-2_1.html#REF27292
     45 *
     46 * "Client programs shall be invoked with a valid stack pointer (r1) with
     47 * at least 32K bytes of memory available for stack growth".
     48 */
     49#define VOF_STACK_SIZE       0x8000
     50
     51#define VOF_MEM_READ(pa, buf, size) \
     52    address_space_read(&address_space_memory, \
     53    (pa), MEMTXATTRS_UNSPECIFIED, (buf), (size))
     54#define VOF_MEM_WRITE(pa, buf, size) \
     55    address_space_write(&address_space_memory, \
     56    (pa), MEMTXATTRS_UNSPECIFIED, (buf), (size))
     57
     58#define PROM_ERROR          (~0U)
     59
     60#endif /* HW_VOF_H */