xref: /openbmc/qemu/include/system/xen.h (revision 65cb7129f4160c7e07a0da107f888ec73ae96776)
1*32cad1ffSPhilippe Mathieu-Daudé /*
2*32cad1ffSPhilippe Mathieu-Daudé  * QEMU Xen support
3*32cad1ffSPhilippe Mathieu-Daudé  *
4*32cad1ffSPhilippe Mathieu-Daudé  * This work is licensed under the terms of the GNU GPL, version 2 or later.
5*32cad1ffSPhilippe Mathieu-Daudé  * See the COPYING file in the top-level directory.
6*32cad1ffSPhilippe Mathieu-Daudé  */
7*32cad1ffSPhilippe Mathieu-Daudé 
8*32cad1ffSPhilippe Mathieu-Daudé /* header to be included in non-Xen-specific code */
9*32cad1ffSPhilippe Mathieu-Daudé 
10*32cad1ffSPhilippe Mathieu-Daudé #ifndef SYSTEM_XEN_H
11*32cad1ffSPhilippe Mathieu-Daudé #define SYSTEM_XEN_H
12*32cad1ffSPhilippe Mathieu-Daudé 
13*32cad1ffSPhilippe Mathieu-Daudé #ifdef CONFIG_USER_ONLY
14*32cad1ffSPhilippe Mathieu-Daudé #error Cannot include system/xen.h from user emulation
15*32cad1ffSPhilippe Mathieu-Daudé #endif
16*32cad1ffSPhilippe Mathieu-Daudé 
17*32cad1ffSPhilippe Mathieu-Daudé #include "exec/cpu-common.h"
18*32cad1ffSPhilippe Mathieu-Daudé 
19*32cad1ffSPhilippe Mathieu-Daudé #ifdef COMPILING_PER_TARGET
20*32cad1ffSPhilippe Mathieu-Daudé # ifdef CONFIG_XEN
21*32cad1ffSPhilippe Mathieu-Daudé #  define CONFIG_XEN_IS_POSSIBLE
22*32cad1ffSPhilippe Mathieu-Daudé # endif
23*32cad1ffSPhilippe Mathieu-Daudé #else
24*32cad1ffSPhilippe Mathieu-Daudé # define CONFIG_XEN_IS_POSSIBLE
25*32cad1ffSPhilippe Mathieu-Daudé #endif /* COMPILING_PER_TARGET */
26*32cad1ffSPhilippe Mathieu-Daudé 
27*32cad1ffSPhilippe Mathieu-Daudé #ifdef CONFIG_XEN_IS_POSSIBLE
28*32cad1ffSPhilippe Mathieu-Daudé 
29*32cad1ffSPhilippe Mathieu-Daudé extern bool xen_allowed;
30*32cad1ffSPhilippe Mathieu-Daudé 
31*32cad1ffSPhilippe Mathieu-Daudé #define xen_enabled()           (xen_allowed)
32*32cad1ffSPhilippe Mathieu-Daudé 
33*32cad1ffSPhilippe Mathieu-Daudé void xen_hvm_modified_memory(ram_addr_t start, ram_addr_t length);
34*32cad1ffSPhilippe Mathieu-Daudé void xen_ram_alloc(ram_addr_t ram_addr, ram_addr_t size,
35*32cad1ffSPhilippe Mathieu-Daudé                    struct MemoryRegion *mr, Error **errp);
36*32cad1ffSPhilippe Mathieu-Daudé 
37*32cad1ffSPhilippe Mathieu-Daudé #else /* !CONFIG_XEN_IS_POSSIBLE */
38*32cad1ffSPhilippe Mathieu-Daudé 
39*32cad1ffSPhilippe Mathieu-Daudé #define xen_enabled() 0
xen_hvm_modified_memory(ram_addr_t start,ram_addr_t length)40*32cad1ffSPhilippe Mathieu-Daudé static inline void xen_hvm_modified_memory(ram_addr_t start, ram_addr_t length)
41*32cad1ffSPhilippe Mathieu-Daudé {
42*32cad1ffSPhilippe Mathieu-Daudé     /* nothing */
43*32cad1ffSPhilippe Mathieu-Daudé }
xen_ram_alloc(ram_addr_t ram_addr,ram_addr_t size,MemoryRegion * mr,Error ** errp)44*32cad1ffSPhilippe Mathieu-Daudé static inline void xen_ram_alloc(ram_addr_t ram_addr, ram_addr_t size,
45*32cad1ffSPhilippe Mathieu-Daudé                                  MemoryRegion *mr, Error **errp)
46*32cad1ffSPhilippe Mathieu-Daudé {
47*32cad1ffSPhilippe Mathieu-Daudé     g_assert_not_reached();
48*32cad1ffSPhilippe Mathieu-Daudé }
49*32cad1ffSPhilippe Mathieu-Daudé 
50*32cad1ffSPhilippe Mathieu-Daudé #endif /* CONFIG_XEN_IS_POSSIBLE */
51*32cad1ffSPhilippe Mathieu-Daudé 
52*32cad1ffSPhilippe Mathieu-Daudé bool xen_mr_is_memory(MemoryRegion *mr);
53*32cad1ffSPhilippe Mathieu-Daudé bool xen_mr_is_grants(MemoryRegion *mr);
54*32cad1ffSPhilippe Mathieu-Daudé #endif
55