The registers used for hypercalls depends on the operating mode of the guest.
.. list-table::
- :header-rows: 1
+ :header-rows: 1
- * - ABI
- - Hypercall Index
- - Parameters (1 - 6)
- - Result
+ * - ABI
+ - Hypercall Index
+ - Parameters (1 - 6)
+ - Result
- * - 64bit
- - RAX
- - RDI RSI RDX R10 R8 R9
- - RAX
+ * - 64bit
+ - RAX
+ - RDI RSI RDX R10 R8 R9
+ - RAX
- * - 32bit
- - EAX
- - EBX ECX EDX ESI EDI EBP
- - EAX
+ * - 32bit
+ - EAX
+ - EBX ECX EDX ESI EDI EBP
+ - EAX
32 and 64bit PV guests have an ABI fixed by their guest type. The ABI for an
HVM guest depends on whether the vCPU is operating in a 64bit segment or not
between virtualisation mode and hardware vendor.
.. list-table::
- :header-rows: 1
+ :header-rows: 1
- * - Guest
- - Transfer instruction
+ * - Guest
+ - Transfer instruction
- * - 32bit PV
- - INT 0x82
+ * - 32bit PV
+ - INT 0x82
- * - 64bit PV
- - SYSCALL
+ * - 64bit PV
+ - SYSCALL
- * - Intel HVM
- - VMCALL
+ * - Intel HVM
+ - VMCALL
- * - AMD HVM
- - VMMCALL
+ * - AMD HVM
+ - VMMCALL
To abstract away the details, Xen implements an interface known as the
Hypercall Page. This allows a guest to make a hypercall without needing to
.. code-block:: none
- call hypercall_page + index * 32
+ call hypercall_page + index * 32
There result is an ABI which is invariant of the exact operating mode or
hardware vendor. This is intended to simplify guest kernel interfaces by
.. warning::
- ARM doesn't currently boot when the final binary exceeds 2MB in size,
- and the coverage build tends to exceed this limit.
+ ARM doesn't currently boot when the final binary exceeds 2MB in size,
+ and the coverage build tends to exceed this limit.
Compiling Xen
.. note::
- Xen's Sphinx/RST documentation is a work in progress. The existing
- documentation can be found at https://xenbits.xen.org/docs/
+ Xen's Sphinx/RST documentation is a work in progress. The existing
+ documentation can be found at https://xenbits.xen.org/docs/
User documentation
configure the system.
.. toctree::
- :maxdepth: 2
+ :maxdepth: 2
- admin-guide/index
+ admin-guide/index
Guest documentation
to avoid breaking things.
.. toctree::
- :maxdepth: 3
+ :maxdepth: 3
- guest-guide/index
+ guest-guide/index
Hypervisor developer documentation
kind of development environment.
.. toctree::
- :maxdepth: 2
+ :maxdepth: 2
- hypervisor-guide/index
+ hypervisor-guide/index