]> xenbits.xensource.com Git - xen.git/commitdiff
docs: Document some more hypercalls
authorIan Jackson <Ian.Jackson@eu.citrix.com>
Mon, 2 Apr 2012 16:02:45 +0000 (17:02 +0100)
committerIan Jackson <Ian.Jackson@eu.citrix.com>
Mon, 2 Apr 2012 16:02:45 +0000 (17:02 +0100)
Some of these could probably do with some review from people who know
what these hypercalls actually do.

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
---
 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(-)

xen/include/public/arch-x86/xen.h
xen/include/public/arch-x86_64.h
xen/include/public/platform.h

index d663cefb143dd394030ac690c99011840421e339..1c186d7961b867e5205f631ff151af9f8ad440ae 100644 (file)
@@ -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.
index fbb263999af191689b5ab68072759fa529e0f73b..409805f35f1f518633c990a019cb30c36b27a454 100644 (file)
  */
 
 #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 (???).
+ */
index 5a723e1e10b9558d9b774143553fc30c89162ed3..ad51634abdf5a0df78375db86258f0ab122b1f91 100644 (file)
@@ -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 */