Handle gcc __builtin_strcmp using 128/256 bit vectors with sse4.1, avx/avx2
[valgrind.git] / include / vki / vki-xen.h
blob2c91b4a209d174bd861551b03951b77d8107be2d
1 /*
2 This file is part of Valgrind, a dynamic binary instrumentation
3 framework.
5 Copyright (C) 2012-2017 Citrix
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.
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.
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, see <http://www.gnu.org/licenses/>.
20 The GNU General Public License is contained in the file COPYING.
23 /* Contributed by Andrew Cooper <andrew.cooper3@citrix.com>
24 and Ian Campbell <ian.campbell@citrix.com> */
26 #ifndef __VKI_XEN_H
27 #define __VKI_XEN_H
29 #define ENABLE_XEN 1
31 #define __VKI_XEN_set_trap_table 0
32 #define __VKI_XEN_mmu_update 1
33 #define __VKI_XEN_set_gdt 2
34 #define __VKI_XEN_stack_switch 3
35 #define __VKI_XEN_set_callbacks 4
36 #define __VKI_XEN_fpu_taskswitch 5
37 #define __VKI_XEN_sched_op_compat 6 /* compat since 0x00030101 */
38 #define __VKI_XEN_platform_op 7
39 #define __VKI_XEN_set_debugreg 8
40 #define __VKI_XEN_get_debugreg 9
41 #define __VKI_XEN_update_descriptor 10
42 #define __VKI_XEN_memory_op 12
43 #define __VKI_XEN_multicall 13
44 #define __VKI_XEN_update_va_mapping 14
45 #define __VKI_XEN_set_timer_op 15
46 #define __VKI_XEN_event_channel_op_compat 16 /* compat since 0x00030202 */
47 #define __VKI_XEN_xen_version 17
48 #define __VKI_XEN_console_io 18
49 #define __VKI_XEN_physdev_op_compat 19 /* compat since 0x00030202 */
50 #define __VKI_XEN_grant_table_op 20
51 #define __VKI_XEN_vm_assist 21
52 #define __VKI_XEN_update_va_mapping_otherdomain 22
53 #define __VKI_XEN_iret 23 /* x86 only */
54 #define __VKI_XEN_vcpu_op 24
55 #define __VKI_XEN_set_segment_base 25 /* x86/64 only */
56 #define __VKI_XEN_mmuext_op 26
57 #define __VKI_XEN_xsm_op 27
58 #define __VKI_XEN_nmi_op 28
59 #define __VKI_XEN_sched_op 29
60 #define __VKI_XEN_callback_op 30
61 #define __VKI_XEN_xenoprof_op 31
62 #define __VKI_XEN_event_channel_op 32
63 #define __VKI_XEN_physdev_op 33
64 #define __VKI_XEN_hvm_op 34
65 #define __VKI_XEN_sysctl 35
66 #define __VKI_XEN_domctl 36
67 #define __VKI_XEN_kexec_op 37
68 #define __VKI_XEN_tmem_op 38
69 #define __VKI_XEN_xc_reserved_op 39 /* reserved for XenClient */
71 #define __DEFINE_VKI_XEN_GUEST_HANDLE(name, type) \
72 ___DEFINE_VKI_XEN_GUEST_HANDLE(name, type); \
73 ___DEFINE_VKI_XEN_GUEST_HANDLE(const_##name, const type)
74 #define DEFINE_VKI_XEN_GUEST_HANDLE(name) __DEFINE_VKI_XEN_GUEST_HANDLE(name, name)
76 typedef vki_uint8_t vki_xen_domain_handle_t[16];
77 typedef vki_uint16_t vki_xen_domid_t;
79 #if defined(__i386__) || defined(__x86_64__)
80 #include <vki/vki-xen-x86.h>
81 #else
82 #error "Need to define per-ARCH Xen types for this platform"
83 #endif
85 DEFINE_VKI_XEN_GUEST_HANDLE(void);
86 DEFINE_VKI_XEN_GUEST_HANDLE(char);
87 DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_pfn_t);
89 __DEFINE_VKI_XEN_GUEST_HANDLE(vki_ulong, unsigned long);
91 __DEFINE_VKI_XEN_GUEST_HANDLE(vki_int16, vki_int16_t);
92 __DEFINE_VKI_XEN_GUEST_HANDLE(vki_int32, vki_int32_t);
93 __DEFINE_VKI_XEN_GUEST_HANDLE(vki_int64, vki_int64_t);
95 __DEFINE_VKI_XEN_GUEST_HANDLE(vki_uint8, vki_uint8_t);
96 __DEFINE_VKI_XEN_GUEST_HANDLE(vki_uint16, vki_uint16_t);
97 __DEFINE_VKI_XEN_GUEST_HANDLE(vki_uint32, vki_uint32_t);
98 __DEFINE_VKI_XEN_GUEST_HANDLE(vki_uint64, vki_uint64_t);
100 struct vki_xenctl_bitmap {
101 VKI_XEN_GUEST_HANDLE_64(vki_uint8) bitmap;
102 vki_uint32_t nr_bits;
105 #include <vki/vki-xen-domctl.h>
106 #include <vki/vki-xen-sysctl.h>
107 #include <vki/vki-xen-mmuext.h>
108 #include <vki/vki-xen-schedop.h>
109 #include <vki/vki-xen-memory.h>
110 #include <vki/vki-xen-evtchn.h>
111 #include <vki/vki-xen-gnttab.h>
112 #include <vki/vki-xen-version.h>
113 #include <vki/vki-xen-hvm.h>
114 #include <vki/vki-xen-tmem.h>
115 #include <vki/vki-xen-xsm.h>
116 #include <vki/vki-xen-physdev.h>
118 #endif // __VKI_XEN_H
120 /*--------------------------------------------------------------------*/
121 /*--- end ---*/
122 /*--------------------------------------------------------------------*/