xen: arm: separate guest user regs from internal guest state.
authorIan Campbell <ian.campbell@citrix.com>
Fri, 22 Feb 2013 08:58:03 +0000 (08:58 +0000)
committerIan Campbell <ian.campbell@citrix.com>
Fri, 22 Feb 2013 12:14:53 +0000 (12:14 +0000)
commit1c38a1e937d39d3f6079667bfb6e8ff877eddbde
tree168a0f74572069e862dae30ccce6335ed7d44b0f
parenta51b368b64943196f86f444c45b1c5c61b148d1a
xen: arm: separate guest user regs from internal guest state.

struct cpu_user_regs is currently used as both internal state
(specifically at the base of the stack) and a guest/toolstack
visible API (via struct vcpu_guest_context used by
XEN_DOMCTL_{g,s}etvcpucontext and VCPUOP_initialise).

This causes problems when we want to make the API 64-bit clean since
we don't really want to change the size of the on-stack struct.

So split into vcpu_guest_core_regs which is the API facing struct
and keep cpu_user_regs purely internal, translate between the two.

In the user API arrange for both 64- and 32-bit registers to be
included in a layout which does not differ depending on toolstack
architecture. Also switch to using the more formal banked register
names (e.g. with the _usr suffix) for clarity.

This is an ABI change. Note that the kernel doesn't currently use
this data structure so it affects the tools interface only.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Tim Deegan <tim@xen.org>
15 files changed:
tools/include/xen-foreign/mkheader.py
tools/include/xen-foreign/reference.size
tools/include/xen-foreign/structs.py
tools/libxc/xc_dom_arm.c
xen/arch/arm/arm32/Makefile
xen/arch/arm/arm32/domain.c [new file with mode: 0644]
xen/arch/arm/arm64/Makefile
xen/arch/arm/arm64/domain.c [new file with mode: 0644]
xen/arch/arm/domain.c
xen/arch/arm/domctl.c
xen/include/asm-arm/arm32/processor.h
xen/include/asm-arm/arm64/processor.h
xen/include/asm-arm/current.h
xen/include/asm-arm/processor.h
xen/include/public/arch-arm.h