Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-12-16 10:32:56

0001 /*
0002    This file is part of Valgrind, a dynamic binary instrumentation
0003    framework.
0004 
0005    Copyright (C) 2012-2017 Citrix
0006 
0007    This program is free software; you can redistribute it and/or
0008    modify it under the terms of the GNU General Public License as
0009    published by the Free Software Foundation; either version 2 of the
0010    License, or (at your option) any later version.
0011 
0012    This program is distributed in the hope that it will be useful, but
0013    WITHOUT ANY WARRANTY; without even the implied warranty of
0014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0015    General Public License for more details.
0016 
0017    You should have received a copy of the GNU General Public License
0018    along with this program; if not, see <http://www.gnu.org/licenses/>.
0019 
0020    The GNU General Public License is contained in the file COPYING.
0021 */
0022 
0023 /* Contributed by Andrew Cooper <andrew.cooper3@citrix.com>
0024    and Ian Campbell <ian.campbell@citrix.com> */
0025 
0026 #ifndef __VKI_XEN_H
0027 #define __VKI_XEN_H
0028 
0029 #define ENABLE_XEN 1
0030 
0031 #define __VKI_XEN_set_trap_table        0
0032 #define __VKI_XEN_mmu_update            1
0033 #define __VKI_XEN_set_gdt               2
0034 #define __VKI_XEN_stack_switch          3
0035 #define __VKI_XEN_set_callbacks         4
0036 #define __VKI_XEN_fpu_taskswitch        5
0037 #define __VKI_XEN_sched_op_compat       6 /* compat since 0x00030101 */
0038 #define __VKI_XEN_platform_op           7
0039 #define __VKI_XEN_set_debugreg          8
0040 #define __VKI_XEN_get_debugreg          9
0041 #define __VKI_XEN_update_descriptor    10
0042 #define __VKI_XEN_memory_op            12
0043 #define __VKI_XEN_multicall            13
0044 #define __VKI_XEN_update_va_mapping    14
0045 #define __VKI_XEN_set_timer_op         15
0046 #define __VKI_XEN_event_channel_op_compat 16 /* compat since 0x00030202 */
0047 #define __VKI_XEN_xen_version          17
0048 #define __VKI_XEN_console_io           18
0049 #define __VKI_XEN_physdev_op_compat    19 /* compat since 0x00030202 */
0050 #define __VKI_XEN_grant_table_op       20
0051 #define __VKI_XEN_vm_assist            21
0052 #define __VKI_XEN_update_va_mapping_otherdomain 22
0053 #define __VKI_XEN_iret                 23 /* x86 only */
0054 #define __VKI_XEN_vcpu_op              24
0055 #define __VKI_XEN_set_segment_base     25 /* x86/64 only */
0056 #define __VKI_XEN_mmuext_op            26
0057 #define __VKI_XEN_xsm_op               27
0058 #define __VKI_XEN_nmi_op               28
0059 #define __VKI_XEN_sched_op             29
0060 #define __VKI_XEN_callback_op          30
0061 #define __VKI_XEN_xenoprof_op          31
0062 #define __VKI_XEN_event_channel_op     32
0063 #define __VKI_XEN_physdev_op           33
0064 #define __VKI_XEN_hvm_op               34
0065 #define __VKI_XEN_sysctl               35
0066 #define __VKI_XEN_domctl               36
0067 #define __VKI_XEN_kexec_op             37
0068 #define __VKI_XEN_tmem_op              38
0069 #define __VKI_XEN_xc_reserved_op       39 /* reserved for XenClient */
0070 
0071 #define __DEFINE_VKI_XEN_GUEST_HANDLE(name, type) \
0072     ___DEFINE_VKI_XEN_GUEST_HANDLE(name, type);   \
0073     ___DEFINE_VKI_XEN_GUEST_HANDLE(const_##name, const type)
0074 #define DEFINE_VKI_XEN_GUEST_HANDLE(name)   __DEFINE_VKI_XEN_GUEST_HANDLE(name, name)
0075 
0076 typedef vki_uint8_t vki_xen_domain_handle_t[16];
0077 typedef vki_uint16_t vki_xen_domid_t;
0078 
0079 #if defined(__i386__) || defined(__x86_64__)
0080 #include <vki/vki-xen-x86.h>
0081 #else
0082 #error "Need to define per-ARCH Xen types for this platform"
0083 #endif
0084 
0085 DEFINE_VKI_XEN_GUEST_HANDLE(void);
0086 DEFINE_VKI_XEN_GUEST_HANDLE(char);
0087 DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_pfn_t);
0088 
0089 __DEFINE_VKI_XEN_GUEST_HANDLE(vki_ulong, unsigned long);
0090 
0091 __DEFINE_VKI_XEN_GUEST_HANDLE(vki_int16, vki_int16_t);
0092 __DEFINE_VKI_XEN_GUEST_HANDLE(vki_int32, vki_int32_t);
0093 __DEFINE_VKI_XEN_GUEST_HANDLE(vki_int64, vki_int64_t);
0094 
0095 __DEFINE_VKI_XEN_GUEST_HANDLE(vki_uint8, vki_uint8_t);
0096 __DEFINE_VKI_XEN_GUEST_HANDLE(vki_uint16, vki_uint16_t);
0097 __DEFINE_VKI_XEN_GUEST_HANDLE(vki_uint32, vki_uint32_t);
0098 __DEFINE_VKI_XEN_GUEST_HANDLE(vki_uint64, vki_uint64_t);
0099 
0100 struct vki_xenctl_bitmap {
0101     VKI_XEN_GUEST_HANDLE_64(vki_uint8) bitmap;
0102     vki_uint32_t nr_bits;
0103 };
0104 
0105 #include <vki/vki-xen-domctl.h>
0106 #include <vki/vki-xen-sysctl.h>
0107 #include <vki/vki-xen-mmuext.h>
0108 #include <vki/vki-xen-schedop.h>
0109 #include <vki/vki-xen-memory.h>
0110 #include <vki/vki-xen-evtchn.h>
0111 #include <vki/vki-xen-gnttab.h>
0112 #include <vki/vki-xen-version.h>
0113 #include <vki/vki-xen-hvm.h>
0114 #include <vki/vki-xen-tmem.h>
0115 #include <vki/vki-xen-xsm.h>
0116 #include <vki/vki-xen-physdev.h>
0117 
0118 #endif // __VKI_XEN_H
0119 
0120 /*--------------------------------------------------------------------*/
0121 /*--- end                                                          ---*/
0122 /*--------------------------------------------------------------------*/