1
2
3
4
5
6#ifndef HW_VOF_H
7#define HW_VOF_H
8
9typedef struct Vof {
10 uint64_t top_addr;
11 GArray *claimed;
12 uint64_t claimed_base;
13 GHashTable *of_instances;
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
44
45
46
47
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
61