xref: /freebsd/sys/xen/xen-os.h (revision 76acc41fb7c740bc49e2638529b8cc750ff281d5)
1*76acc41fSJustin T. Gibbs /******************************************************************************
2*76acc41fSJustin T. Gibbs  * xen/xen-os.h
3*76acc41fSJustin T. Gibbs  *
4*76acc41fSJustin T. Gibbs  * Random collection of macros and definition
5*76acc41fSJustin T. Gibbs  *
6*76acc41fSJustin T. Gibbs  * Copyright (c) 2003, 2004 Keir Fraser (on behalf of the Xen team)
7*76acc41fSJustin T. Gibbs  * All rights reserved.
8*76acc41fSJustin T. Gibbs  *
9*76acc41fSJustin T. Gibbs  * Permission is hereby granted, free of charge, to any person obtaining a copy
10*76acc41fSJustin T. Gibbs  * of this software and associated documentation files (the "Software"), to
11*76acc41fSJustin T. Gibbs  * deal in the Software without restriction, including without limitation the
12*76acc41fSJustin T. Gibbs  * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
13*76acc41fSJustin T. Gibbs  * sell copies of the Software, and to permit persons to whom the Software is
14*76acc41fSJustin T. Gibbs  * furnished to do so, subject to the following conditions:
15*76acc41fSJustin T. Gibbs  *
16*76acc41fSJustin T. Gibbs  * The above copyright notice and this permission notice shall be included in
17*76acc41fSJustin T. Gibbs  * all copies or substantial portions of the Software.
18*76acc41fSJustin T. Gibbs  *
19*76acc41fSJustin T. Gibbs  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20*76acc41fSJustin T. Gibbs  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21*76acc41fSJustin T. Gibbs  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22*76acc41fSJustin T. Gibbs  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23*76acc41fSJustin T. Gibbs  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
24*76acc41fSJustin T. Gibbs  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
25*76acc41fSJustin T. Gibbs  * DEALINGS IN THE SOFTWARE.
26*76acc41fSJustin T. Gibbs  *
27*76acc41fSJustin T. Gibbs  * $FreeBSD$
28*76acc41fSJustin T. Gibbs  */
29*76acc41fSJustin T. Gibbs 
30*76acc41fSJustin T. Gibbs #ifndef _XEN_XEN_OS_H_
31*76acc41fSJustin T. Gibbs #define _XEN_XEN_OS_H_
32*76acc41fSJustin T. Gibbs 
33*76acc41fSJustin T. Gibbs #if !defined(__XEN_INTERFACE_VERSION__)
34*76acc41fSJustin T. Gibbs #define  __XEN_INTERFACE_VERSION__ 0x00030208
35*76acc41fSJustin T. Gibbs #endif
36*76acc41fSJustin T. Gibbs 
37*76acc41fSJustin T. Gibbs #define GRANT_REF_INVALID   0xffffffff
38*76acc41fSJustin T. Gibbs 
39*76acc41fSJustin T. Gibbs #ifdef LOCORE
40*76acc41fSJustin T. Gibbs #define __ASSEMBLY__
41*76acc41fSJustin T. Gibbs #endif
42*76acc41fSJustin T. Gibbs 
43*76acc41fSJustin T. Gibbs #include <machine/xen/xen-os.h>
44*76acc41fSJustin T. Gibbs 
45*76acc41fSJustin T. Gibbs #include <xen/interface/xen.h>
46*76acc41fSJustin T. Gibbs 
47*76acc41fSJustin T. Gibbs /* Everything below this point is not included by assembler (.S) files. */
48*76acc41fSJustin T. Gibbs #ifndef __ASSEMBLY__
49*76acc41fSJustin T. Gibbs 
50*76acc41fSJustin T. Gibbs /* Force a proper event-channel callback from Xen. */
51*76acc41fSJustin T. Gibbs void force_evtchn_callback(void);
52*76acc41fSJustin T. Gibbs 
53*76acc41fSJustin T. Gibbs extern int gdtset;
54*76acc41fSJustin T. Gibbs 
55*76acc41fSJustin T. Gibbs extern shared_info_t *HYPERVISOR_shared_info;
56*76acc41fSJustin T. Gibbs 
57*76acc41fSJustin T. Gibbs enum xen_domain_type {
58*76acc41fSJustin T. Gibbs 	XEN_NATIVE,             /* running on bare hardware    */
59*76acc41fSJustin T. Gibbs 	XEN_PV_DOMAIN,          /* running in a PV domain      */
60*76acc41fSJustin T. Gibbs 	XEN_HVM_DOMAIN,         /* running in a Xen hvm domain */
61*76acc41fSJustin T. Gibbs };
62*76acc41fSJustin T. Gibbs 
63*76acc41fSJustin T. Gibbs extern enum xen_domain_type xen_domain_type;
64*76acc41fSJustin T. Gibbs 
65*76acc41fSJustin T. Gibbs static inline int
66*76acc41fSJustin T. Gibbs xen_domain(void)
67*76acc41fSJustin T. Gibbs {
68*76acc41fSJustin T. Gibbs 	return (xen_domain_type != XEN_NATIVE);
69*76acc41fSJustin T. Gibbs }
70*76acc41fSJustin T. Gibbs 
71*76acc41fSJustin T. Gibbs static inline int
72*76acc41fSJustin T. Gibbs xen_pv_domain(void)
73*76acc41fSJustin T. Gibbs {
74*76acc41fSJustin T. Gibbs 	return (xen_domain_type == XEN_PV_DOMAIN);
75*76acc41fSJustin T. Gibbs }
76*76acc41fSJustin T. Gibbs 
77*76acc41fSJustin T. Gibbs static inline int
78*76acc41fSJustin T. Gibbs xen_hvm_domain(void)
79*76acc41fSJustin T. Gibbs {
80*76acc41fSJustin T. Gibbs 	return (xen_domain_type == XEN_HVM_DOMAIN);
81*76acc41fSJustin T. Gibbs }
82*76acc41fSJustin T. Gibbs 
83*76acc41fSJustin T. Gibbs #ifndef xen_mb
84*76acc41fSJustin T. Gibbs #define xen_mb() mb()
85*76acc41fSJustin T. Gibbs #endif
86*76acc41fSJustin T. Gibbs #ifndef xen_rmb
87*76acc41fSJustin T. Gibbs #define xen_rmb() rmb()
88*76acc41fSJustin T. Gibbs #endif
89*76acc41fSJustin T. Gibbs #ifndef xen_wmb
90*76acc41fSJustin T. Gibbs #define xen_wmb() wmb()
91*76acc41fSJustin T. Gibbs #endif
92*76acc41fSJustin T. Gibbs 
93*76acc41fSJustin T. Gibbs #endif /* !__ASSEMBLY__ */
94*76acc41fSJustin T. Gibbs 
95*76acc41fSJustin T. Gibbs #endif /* _XEN_XEN_OS_H_ */
96