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