33#define __XEN_INTERFACE_VERSION__ 0x00030208
35#define GRANT_REF_INVALID 0xffffffff
41#include <contrib/xen/xen.h>
45#include <contrib/xen/event_channel.h>
47static inline vm_paddr_t
48xen_get_xenstore_mfn(
void)
51 return (hvm_get_parameter(HVM_PARAM_STORE_PFN));
54static inline evtchn_port_t
55xen_get_xenstore_evtchn(
void)
58 return (hvm_get_parameter(HVM_PARAM_STORE_EVTCHN));
61static inline vm_paddr_t
62xen_get_console_mfn(
void)
65 return (hvm_get_parameter(HVM_PARAM_CONSOLE_PFN));
68static inline evtchn_port_t
69xen_get_console_evtchn(
void)
72 return (hvm_get_parameter(HVM_PARAM_CONSOLE_EVTCHN));
75extern shared_info_t *HYPERVISOR_shared_info;
77extern bool xen_suspend_cancelled;
85extern enum xen_domain_type xen_domain_type;
90 return (xen_domain_type != XEN_NATIVE);
96 return (xen_domain_type == XEN_PV_DOMAIN);
102 return (xen_domain_type == XEN_HVM_DOMAIN);
106xen_initial_domain(
void)
109 return (xen_domain() && (hvm_start_flags & SIF_INITDOMAIN) != 0);
113#include <machine/xen/xen-os.h>
125#define NBPL (NBBY * sizeof(long))
128xen_test_bit(
int bit,
volatile long *addr)
130 unsigned long mask = 1UL << (bit % NBPL);
132 return !!(atomic_load_acq_long(&addr[bit / NBPL]) & mask);
136xen_set_bit(
int bit,
volatile long *addr)
138 atomic_set_long(&addr[bit / NBPL], 1UL << (bit % NBPL));
142xen_clear_bit(
int bit,
volatile long *addr)
144 atomic_clear_long(&addr[bit / NBPL], 1UL << (bit % NBPL));
153struct resource *xenmem_alloc(device_t dev,
int *res_id,
size_t size);
154int xenmem_free(device_t dev,
int res_id,
struct resource *res);
157void xc_printf(
const char *, ...) __printflike(1, 2);
163#define xen_rmb() rmb()
166#define xen_wmb() wmb()