diff options
author | Ian Campbell <ian.campbell@citrix.com> | 2012-07-25 17:39:21 +0100 |
---|---|---|
committer | Ian Campbell <ian.campbell@citrix.com> | 2012-07-25 17:39:21 +0100 |
commit | 4147c74e872432b7b41403ea4e9789532953b84d (patch) | |
tree | cf43cfab3c14988ce4b991ddaf443965e3b48723 /tools/libxl/libxl.c | |
parent | b905f2f14b31bc9a060a7aea712056b73b17c036 (diff) | |
download | xen-4147c74e872432b7b41403ea4e9789532953b84d.tar.gz xen-4147c74e872432b7b41403ea4e9789532953b84d.tar.bz2 xen-4147c74e872432b7b41403ea4e9789532953b84d.zip |
arm: implement hypercall continuations
Largely cribbed from x86, register names differ and the return value is r0 ==
the first argument rather than the hypercall number (which is r12).
We must only clobber the hypercall arguments if PC has not been changed since
continuations rely on them.
Multicall variant is untested, On ARM do_multicall_call is currently a BUG() so
we obviously don't use that yet. I have left a BUG in the hypercall
continuation path too since it will need validation once multicalls are
implemented.
Since the multicall state is local we do not need a globally atomic
{test,set}_bit. However we do need to be atomic WRT interrupts so can't just
use the naive RMW version. Stick with the global atomic implementation for now
but keep the __ as documentaion of the intention.
Signed-off-by: Ian Campbell <Ian.Campbell@citrix.com>
Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Committed-by: Ian Campbell <ian.campbell@citrix.com>
Diffstat (limited to 'tools/libxl/libxl.c')
0 files changed, 0 insertions, 0 deletions