Coverage Report

Created: 2017-10-25 09:10

/root/src/xen/xen/include/asm/hypercall.h
Line
Count
Source (jump to first uncovered line)
1
/******************************************************************************
2
 * asm-x86/hypercall.h
3
 */
4
5
#ifndef __ASM_X86_HYPERCALL_H__
6
#define __ASM_X86_HYPERCALL_H__
7
8
#include <xen/types.h>
9
#include <public/physdev.h>
10
#include <public/event_channel.h>
11
#include <public/arch-x86/xen-mca.h> /* for do_mca */
12
#include <asm/paging.h>
13
14
typedef unsigned long hypercall_fn_t(
15
    unsigned long, unsigned long, unsigned long,
16
    unsigned long, unsigned long, unsigned long);
17
18
typedef struct {
19
    hypercall_fn_t *native, *compat;
20
} hypercall_table_t;
21
22
typedef struct {
23
    uint8_t native, compat;
24
} hypercall_args_t;
25
26
extern const hypercall_args_t hypercall_args_table[NR_hypercalls];
27
28
void pv_hypercall(struct cpu_user_regs *regs);
29
void hypercall_page_initialise_ring3_kernel(void *hypercall_page);
30
void hypercall_page_initialise_ring1_kernel(void *hypercall_page);
31
32
/*
33
 * Both do_mmuext_op() and do_mmu_update():
34
 * We steal the m.s.b. of the @count parameter to indicate whether this
35
 * invocation of do_mmu_update() is resuming a previously preempted call.
36
 */
37
0
#define MMU_UPDATE_PREEMPTED          (~(~0U>>1))
38
39
extern long
40
do_event_channel_op_compat(
41
    XEN_GUEST_HANDLE_PARAM(evtchn_op_t) uop);
42
43
/* Legacy hypercall (as of 0x00030202). */
44
extern long do_physdev_op_compat(
45
    XEN_GUEST_HANDLE(physdev_op_t) uop);
46
47
/* Legacy hypercall (as of 0x00030101). */
48
extern long do_sched_op_compat(
49
    int cmd, unsigned long arg);
50
51
extern long
52
do_set_trap_table(
53
    XEN_GUEST_HANDLE_PARAM(const_trap_info_t) traps);
54
55
extern long
56
do_mmu_update(
57
    XEN_GUEST_HANDLE_PARAM(mmu_update_t) ureqs,
58
    unsigned int count,
59
    XEN_GUEST_HANDLE_PARAM(uint) pdone,
60
    unsigned int foreigndom);
61
62
extern long
63
do_set_gdt(
64
    XEN_GUEST_HANDLE_PARAM(xen_ulong_t) frame_list,
65
    unsigned int entries);
66
67
extern long
68
do_stack_switch(
69
    unsigned long ss,
70
    unsigned long esp);
71
72
extern long
73
do_fpu_taskswitch(
74
    int set);
75
76
extern long
77
do_set_debugreg(
78
    int reg,
79
    unsigned long value);
80
81
extern unsigned long
82
do_get_debugreg(
83
    int reg);
84
85
extern long
86
do_update_descriptor(
87
    u64 pa,
88
    u64 desc);
89
90
extern long
91
do_mca(XEN_GUEST_HANDLE_PARAM(xen_mc_t) u_xen_mc);
92
93
extern long
94
do_update_va_mapping(
95
    unsigned long va,
96
    u64 val64,
97
    unsigned long flags);
98
99
extern long
100
do_physdev_op(
101
    int cmd, XEN_GUEST_HANDLE_PARAM(void) arg);
102
103
extern long
104
do_update_va_mapping_otherdomain(
105
    unsigned long va,
106
    u64 val64,
107
    unsigned long flags,
108
    domid_t domid);
109
110
extern long
111
do_mmuext_op(
112
    XEN_GUEST_HANDLE_PARAM(mmuext_op_t) uops,
113
    unsigned int count,
114
    XEN_GUEST_HANDLE_PARAM(uint) pdone,
115
    unsigned int foreigndom);
116
117
extern long do_callback_op(
118
    int cmd, XEN_GUEST_HANDLE_PARAM(const_void) arg);
119
120
extern unsigned long
121
do_iret(
122
    void);
123
124
extern long
125
do_set_callbacks(
126
    unsigned long event_address,
127
    unsigned long failsafe_address,
128
    unsigned long syscall_address);
129
130
extern long
131
do_set_segment_base(
132
    unsigned int which,
133
    unsigned long base);
134
135
#ifdef CONFIG_COMPAT
136
137
#include <compat/arch-x86/xen.h>
138
#include <compat/physdev.h>
139
140
extern int
141
compat_physdev_op(
142
    int cmd,
143
    XEN_GUEST_HANDLE_PARAM(void) arg);
144
145
extern int
146
arch_compat_vcpu_op(
147
    int cmd, struct vcpu *v, XEN_GUEST_HANDLE_PARAM(void) arg);
148
149
extern int compat_mmuext_op(
150
    XEN_GUEST_HANDLE_PARAM(void) arg,
151
    unsigned int count,
152
    XEN_GUEST_HANDLE_PARAM(uint) pdone,
153
    unsigned int foreigndom);
154
155
extern int compat_platform_op(
156
    XEN_GUEST_HANDLE_PARAM(void) u_xenpf_op);
157
158
extern long compat_callback_op(
159
    int cmd, XEN_GUEST_HANDLE(void) arg);
160
161
extern int compat_update_va_mapping(
162
    unsigned int va, u32 lo, u32 hi, unsigned int flags);
163
164
extern int compat_update_va_mapping_otherdomain(
165
    unsigned long va, u32 lo, u32 hi, unsigned long flags, domid_t domid);
166
167
DEFINE_XEN_GUEST_HANDLE(trap_info_compat_t);
168
extern int compat_set_trap_table(XEN_GUEST_HANDLE(trap_info_compat_t) traps);
169
170
extern int compat_set_gdt(
171
    XEN_GUEST_HANDLE_PARAM(uint) frame_list, unsigned int entries);
172
173
extern int compat_update_descriptor(
174
    u32 pa_lo, u32 pa_hi, u32 desc_lo, u32 desc_hi);
175
176
extern unsigned int compat_iret(void);
177
178
extern int compat_nmi_op(unsigned int cmd, XEN_GUEST_HANDLE_PARAM(void) arg);
179
180
extern long compat_set_callbacks(
181
    unsigned long event_selector, unsigned long event_address,
182
    unsigned long failsafe_selector, unsigned long failsafe_address);
183
184
DEFINE_XEN_GUEST_HANDLE(physdev_op_compat_t);
185
extern int compat_physdev_op_compat(XEN_GUEST_HANDLE(physdev_op_compat_t) uop);
186
187
#endif /* CONFIG_COMPAT */
188
189
#endif /* __ASM_X86_HYPERCALL_H__ */