blob: e6f06f70924584963e6a4f7842871f751cbc2712 [file] [log] [blame]
bart51e61da2012-10-23 18:03:28 +00001#ifndef __VKI_XEN_MMUEXT_H
2#define __VKI_XEN_MMUEXT_H
3
4#define VKI_XEN_MMUEXT_PIN_L1_TABLE 0
5#define VKI_XEN_MMUEXT_PIN_L2_TABLE 1
6#define VKI_XEN_MMUEXT_PIN_L3_TABLE 2
7#define VKI_XEN_MMUEXT_PIN_L4_TABLE 3
8#define VKI_XEN_MMUEXT_UNPIN_TABLE 4
9#define VKI_XEN_MMUEXT_NEW_BASEPTR 5
10#define VKI_XEN_MMUEXT_TLB_FLUSH_LOCAL 6
11#define VKI_XEN_MMUEXT_INVLPG_LOCAL 7
12#define VKI_XEN_MMUEXT_TLB_FLUSH_MULTI 8
13#define VKI_XEN_MMUEXT_INVLPG_MULTI 9
14#define VKI_XEN_MMUEXT_TLB_FLUSH_ALL 10
15#define VKI_XEN_MMUEXT_INVLPG_ALL 11
16#define VKI_XEN_MMUEXT_FLUSH_CACHE 12
17#define VKI_XEN_MMUEXT_SET_LDT 13
18#define VKI_XEN_MMUEXT_NEW_USER_BASEPTR 15
19#define VKI_XEN_MMUEXT_CLEAR_PAGE 16
20#define VKI_XEN_MMUEXT_COPY_PAGE 17
21#define VKI_XEN_MMUEXT_FLUSH_CACHE_GLOBAL 18
22#define VKI_XEN_MMUEXT_MARK_SUPER 19
23#define VKI_XEN_MMUEXT_UNMARK_SUPER 20
24
25struct vki_xen_mmuext_op {
26 unsigned int cmd;
27 union {
28 /* [UN]PIN_TABLE, NEW_BASEPTR, NEW_USER_BASEPTR
29 * CLEAR_PAGE, COPY_PAGE, [UN]MARK_SUPER */
30 vki_xen_pfn_t mfn;
31 /* INVLPG_LOCAL, INVLPG_ALL, SET_LDT */
32 unsigned long linear_addr;
33 } arg1;
34 union {
35 /* SET_LDT */
36 unsigned int nr_ents;
37 /* TLB_FLUSH_MULTI, INVLPG_MULTI */
38 VKI_XEN_GUEST_HANDLE(const_void) vcpumask;
39 /* COPY_PAGE */
40 vki_xen_pfn_t src_mfn;
41 } arg2;
42};
43
44#endif // __VKI_XEN_MMUEXT_H
45
46/*--------------------------------------------------------------------*/
47/*--- end ---*/
48/*--------------------------------------------------------------------*/