blob: 817269c659d084c87dbd8b28d491e09555d32c91 [file] [log] [blame]
sewardj35130ac2015-09-01 13:32:21 +00001/*
2 This file is part of Valgrind, a dynamic binary instrumentation
3 framework.
4
Elliott Hughesed398002017-06-21 14:41:24 -07005 Copyright (C) 2012-2017 Citrix
sewardj35130ac2015-09-01 13:32:21 +00006
7 This program is free software; you can redistribute it and/or
8 modify it under the terms of the GNU General Public License as
9 published by the Free Software Foundation; either version 2 of the
10 License, or (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful, but
13 WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
20 02111-1307, USA.
21
22 The GNU General Public License is contained in the file COPYING.
23*/
24
25/* Contributed by Andrew Cooper <andrew.cooper3@citrix.com>
26 and Ian Campbell <ian.campbell@citrix.com> */
27
bart51e61da2012-10-23 18:03:28 +000028#ifndef __VKI_XEN_MMUEXT_H
29#define __VKI_XEN_MMUEXT_H
30
31#define VKI_XEN_MMUEXT_PIN_L1_TABLE 0
32#define VKI_XEN_MMUEXT_PIN_L2_TABLE 1
33#define VKI_XEN_MMUEXT_PIN_L3_TABLE 2
34#define VKI_XEN_MMUEXT_PIN_L4_TABLE 3
35#define VKI_XEN_MMUEXT_UNPIN_TABLE 4
36#define VKI_XEN_MMUEXT_NEW_BASEPTR 5
37#define VKI_XEN_MMUEXT_TLB_FLUSH_LOCAL 6
38#define VKI_XEN_MMUEXT_INVLPG_LOCAL 7
39#define VKI_XEN_MMUEXT_TLB_FLUSH_MULTI 8
40#define VKI_XEN_MMUEXT_INVLPG_MULTI 9
41#define VKI_XEN_MMUEXT_TLB_FLUSH_ALL 10
42#define VKI_XEN_MMUEXT_INVLPG_ALL 11
43#define VKI_XEN_MMUEXT_FLUSH_CACHE 12
44#define VKI_XEN_MMUEXT_SET_LDT 13
45#define VKI_XEN_MMUEXT_NEW_USER_BASEPTR 15
46#define VKI_XEN_MMUEXT_CLEAR_PAGE 16
47#define VKI_XEN_MMUEXT_COPY_PAGE 17
48#define VKI_XEN_MMUEXT_FLUSH_CACHE_GLOBAL 18
49#define VKI_XEN_MMUEXT_MARK_SUPER 19
50#define VKI_XEN_MMUEXT_UNMARK_SUPER 20
51
52struct vki_xen_mmuext_op {
53 unsigned int cmd;
54 union {
55 /* [UN]PIN_TABLE, NEW_BASEPTR, NEW_USER_BASEPTR
56 * CLEAR_PAGE, COPY_PAGE, [UN]MARK_SUPER */
57 vki_xen_pfn_t mfn;
58 /* INVLPG_LOCAL, INVLPG_ALL, SET_LDT */
59 unsigned long linear_addr;
60 } arg1;
61 union {
62 /* SET_LDT */
63 unsigned int nr_ents;
64 /* TLB_FLUSH_MULTI, INVLPG_MULTI */
65 VKI_XEN_GUEST_HANDLE(const_void) vcpumask;
66 /* COPY_PAGE */
67 vki_xen_pfn_t src_mfn;
68 } arg2;
69};
70
71#endif // __VKI_XEN_MMUEXT_H
72
73/*--------------------------------------------------------------------*/
74/*--- end ---*/
75/*--------------------------------------------------------------------*/