]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - sys/xen/interface/arch-ia64/sioemu.h
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / sys / xen / interface / arch-ia64 / sioemu.h
1 /******************************************************************************
2  * sioemu.h
3  *
4  * Copyright (c) 2008 Tristan Gingold <tgingold@free.fr>
5  *
6  * Permission is hereby granted, free of charge, to any person obtaining a copy
7  * of this software and associated documentation files (the "Software"), to
8  * deal in the Software without restriction, including without limitation the
9  * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10  * sell copies of the Software, and to permit persons to whom the Software is
11  * furnished to do so, subject to the following conditions:
12  *
13  * The above copyright notice and this permission notice shall be included in
14  * all copies or substantial portions of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22  * DEALINGS IN THE SOFTWARE.
23  */
24
25 #ifndef __XEN_PUBLIC_IA64_SIOEMU_H__
26 #define __XEN_PUBLIC_IA64_SIOEMU_H__
27
28 /* SIOEMU specific hypercalls.
29    The numbers are the minor part of FW_HYPERCALL_SIOEMU.  */
30
31 /* Defines the callback entry point.  r8=ip, r9=data.
32    Must be called per-vcpu.  */
33 #define SIOEMU_HYPERCALL_SET_CALLBACK 0x01
34
35 /* Finish sioemu fw initialization and start firmware.  r8=ip.  */
36 #define SIOEMU_HYPERCALL_START_FW 0x02
37
38 /* Add IO pages in physmap.  */
39 #define SIOEMU_HYPERCALL_ADD_IO_PHYSMAP 0x03
40
41 /* Get wallclock time.  */
42 #define SIOEMU_HYPERCALL_GET_TIME 0x04
43
44 /* Flush cache.  */
45 #define SIOEMU_HYPERCALL_FLUSH_CACHE 0x07
46
47 /* Get freq base.  */
48 #define SIOEMU_HYPERCALL_FREQ_BASE 0x08
49
50 /* Return from callback.  */
51 #define SIOEMU_HYPERCALL_CALLBACK_RETURN 0x09
52
53 /* Deliver an interrupt.  */
54 #define SIOEMU_HYPERCALL_DELIVER_INT 0x0a
55
56 /* SIOEMU callback reason.  */
57
58 /* An event (from event channel) has to be delivered.  */
59 #define SIOEMU_CB_EVENT       0x00
60
61 /* Emulate an IO access.  */
62 #define SIOEMU_CB_IO_EMULATE  0x01
63
64 /* An IPI is sent to a dead vcpu.  */
65 #define SIOEMU_CB_WAKEUP_VCPU 0x02
66
67 /* A SAL hypercall is executed.  */
68 #define SIOEMU_CB_SAL_ASSIST  0x03
69
70 #ifndef __ASSEMBLY__
71 struct sioemu_callback_info {
72     /* Saved registers.  */
73     unsigned long ip;
74     unsigned long psr;
75     unsigned long ifs;
76     unsigned long nats;
77     unsigned long r8;
78     unsigned long r9;
79     unsigned long r10;
80     unsigned long r11;
81
82     /* Callback parameters.  */
83     unsigned long cause;
84     unsigned long arg0;
85     unsigned long arg1;
86     unsigned long arg2;
87     unsigned long arg3;
88     unsigned long _pad2[2];
89     unsigned long r2;
90 };
91 #endif /* __ASSEMBLY__ */
92 #endif /* __XEN_PUBLIC_IA64_SIOEMU_H__ */