diff options
author | Jeremy Fitzhardinge <jeremy@goop.org> | 2008-07-08 22:07:11 (GMT) |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-07-16 09:05:09 (GMT) |
commit | c05f1cfaba846dfbd4a67e348087d32326288fe0 (patch) | |
tree | 55b44cc1647c0e25729fe708db61ee08d38e7f57 | |
parent | 8a95408e183b3e4aaf3b6a66fa34bff4db53011b (diff) | |
download | linux-c05f1cfaba846dfbd4a67e348087d32326288fe0.tar.xz |
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>
-rw-r--r-- | include/asm-x86/xen/hypercall.h | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/include/asm-x86/xen/hypercall.h b/include/asm-x86/xen/hypercall.h index d9e4cf7..91cb7fd 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 |