aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-x86/xen
diff options
context:
space:
mode:
authorJeremy Fitzhardinge <jeremy@goop.org>2008-07-08 15:07:11 -0700
committerIngo Molnar <mingo@elte.hu>2008-07-16 11:05:09 +0200
commitc05f1cfaba846dfbd4a67e348087d32326288fe0 (patch)
tree55b44cc1647c0e25729fe708db61ee08d38e7f57 /include/asm-x86/xen
parentxen64: Clear %fs on xen_load_tls() (diff)
downloadlinux-dev-c05f1cfaba846dfbd4a67e348087d32326288fe0.tar.xz
linux-dev-c05f1cfaba846dfbd4a67e348087d32326288fe0.zip
xen64: implement 64-bit update_descriptor
64-bit hypercall interface can pass a maddr in one argument rather than splitting it. Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> Cc: Stephen Tweedie <sct@redhat.com> Cc: Eduardo Habkost <ehabkost@redhat.com> Cc: Mark McLoughlin <markmc@redhat.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'include/asm-x86/xen')
-rw-r--r--include/asm-x86/xen/hypercall.h13
1 files changed, 9 insertions, 4 deletions
diff --git a/include/asm-x86/xen/hypercall.h b/include/asm-x86/xen/hypercall.h
index d9e4cf7b23ac..91cb7fd5c123 100644
--- a/include/asm-x86/xen/hypercall.h
+++ b/include/asm-x86/xen/hypercall.h
@@ -466,10 +466,15 @@ MULTI_update_descriptor(struct multicall_entry *mcl, u64 maddr,
struct desc_struct desc)
{
mcl->op = __HYPERVISOR_update_descriptor;
- mcl->args[0] = maddr;
- mcl->args[1] = maddr >> 32;
- mcl->args[2] = desc.a;
- mcl->args[3] = desc.b;
+ if (sizeof(maddr) == sizeof(long)) {
+ mcl->args[0] = maddr;
+ mcl->args[1] = *(unsigned long *)&desc;
+ } else {
+ mcl->args[0] = maddr;
+ mcl->args[1] = maddr >> 32;
+ mcl->args[2] = desc.a;
+ mcl->args[3] = desc.b;
+ }
}
static inline void