From: Ian Jackson Date: Mon, 2 Apr 2012 16:02:45 +0000 (+0100) Subject: docs: Document some more hypercalls X-Git-Tag: 4.2.0-rc1~556 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=951fab3ace5825e166d73312d6329c928f9fd07e;p=xen.git docs: Document some more hypercalls Some of these could probably do with some review from people who know what these hypercalls actually do. Signed-off-by: Ian Jackson Committed-by: Ian Jackson --- xen/include/public/arch-x86/xen.h | 30 ++++++++++++++++++++++++++++++ xen/include/public/arch-x86_64.h | 16 ++++++++++++++++ xen/include/public/platform.h | 4 ++++ 3 files changed, 50 insertions(+), 0 deletions(-) --- diff --git a/xen/include/public/arch-x86/xen.h b/xen/include/public/arch-x86/xen.h index d663cefb14..1c186d7961 100644 --- a/xen/include/public/arch-x86/xen.h +++ b/xen/include/public/arch-x86/xen.h @@ -64,6 +64,11 @@ typedef unsigned long xen_pfn_t; /* * SEGMENT DESCRIPTOR TABLES */ +/* + * ` enum neg_errnoval + * ` HYPERVISOR_set_gdt(const xen_pfn_t frames[], unsigned int entries); + * ` + */ /* * A number of GDT entries are reserved by Xen. These are not situated at the * start of the GDT because some stupid OSes export hard-coded selector values @@ -81,6 +86,13 @@ typedef unsigned long xen_pfn_t; typedef unsigned long xen_ulong_t; +/* + * ` enum neg_errnoval + * ` HYPERVISOR_stack_switch(unsigned long ss, unsigned long esp); + * ` + * Sets the stack segment and pointer for the current vcpu. + */ + /* * ` enum neg_errnoval * ` HYPERVISOR_set_trap_table(const struct trap_info traps[]); @@ -182,6 +194,24 @@ typedef struct arch_shared_info arch_shared_info_t; #endif /* !__ASSEMBLY__ */ +/* + * ` enum neg_errnoval + * ` HYPERVISOR_fpu_taskswitch(int set); + * ` + * Sets (if set!=0) or clears (if set==0) CR0.TS. + */ + +/* + * ` enum neg_errnoval + * ` HYPERVISOR_set_debugreg(int regno, unsigned long value); + * + * ` unsigned long + * ` HYPERVISOR_get_debugreg(int regno); + * For 0<=reg<=7, returns the debug register value. + * For other values of reg, returns ((unsigned long)-EINVAL). + * (Unfortunately, this interface is defective.) + */ + /* * Prefix forces emulation of some non-trapping instructions. * Currently only CPUID. diff --git a/xen/include/public/arch-x86_64.h b/xen/include/public/arch-x86_64.h index fbb263999a..409805f35f 100644 --- a/xen/include/public/arch-x86_64.h +++ b/xen/include/public/arch-x86_64.h @@ -25,3 +25,19 @@ */ #include "arch-x86/xen.h" + +/* + * ` enum neg_errnoval + * ` HYPERVISOR_set_callbacks(unsigned long event_selector, + * ` unsigned long event_address, + * ` unsigned long failsafe_selector, + * ` unsigned long failsafe_address); + * ` + * Register for callbacks on events. When an event (from an event + * channel) occurs, event_address is used as the value of eip. + * + * A similar callback occurs if the segment selectors are invalid. + * failsafe_address is used as the value of eip. + * + * On x86_64, event_selector and failsafe_selector are ignored (???). + */ diff --git a/xen/include/public/platform.h b/xen/include/public/platform.h index 5a723e1e10..ad51634abd 100644 --- a/xen/include/public/platform.h +++ b/xen/include/public/platform.h @@ -504,6 +504,10 @@ struct xenpf_core_parking { typedef struct xenpf_core_parking xenpf_core_parking_t; DEFINE_XEN_GUEST_HANDLE(xenpf_core_parking_t); +/* + * ` enum neg_errnoval + * ` HYPERVISOR_platform_op(const struct xen_platform_op*); + */ struct xen_platform_op { uint32_t cmd; uint32_t interface_version; /* XENPF_INTERFACE_VERSION */