diff options
| -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 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, | |||
| 466 | struct desc_struct desc) | 466 | struct desc_struct desc) |
| 467 | { | 467 | { |
| 468 | mcl->op = __HYPERVISOR_update_descriptor; | 468 | mcl->op = __HYPERVISOR_update_descriptor; |
| 469 | mcl->args[0] = maddr; | 469 | if (sizeof(maddr) == sizeof(long)) { |
| 470 | mcl->args[1] = maddr >> 32; | 470 | mcl->args[0] = maddr; |
| 471 | mcl->args[2] = desc.a; | 471 | mcl->args[1] = *(unsigned long *)&desc; |
| 472 | mcl->args[3] = desc.b; | 472 | } else { |
| 473 | mcl->args[0] = maddr; | ||
| 474 | mcl->args[1] = maddr >> 32; | ||
| 475 | mcl->args[2] = desc.a; | ||
| 476 | mcl->args[3] = desc.b; | ||
| 477 | } | ||
| 473 | } | 478 | } |
| 474 | 479 | ||
| 475 | static inline void | 480 | static inline void |
