ia64/xen-unstable
changeset 8653:63d9f45b271d
Fix 64-bit build and fix the transfer-page code for the
iret hypercall.
Signed-off-by: Keir Fraser <keir@xensource.com>
iret hypercall.
Signed-off-by: Keir Fraser <keir@xensource.com>
author | kaf24@firebug.cl.cam.ac.uk |
---|---|
date | Wed Jan 25 11:08:33 2006 +0100 (2006-01-25) |
parents | 2b4b1963b76e |
children | 806dfeb03d92 |
files | linux-2.6-xen-sparse/include/asm-xen/asm-i386/hypercall.h linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/hypercall.h xen/arch/x86/x86_64/traps.c |
line diff
1.1 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/hypercall.h Tue Jan 24 18:08:11 2006 +0100 1.2 +++ b/linux-2.6-xen-sparse/include/asm-xen/asm-i386/hypercall.h Wed Jan 25 11:08:33 2006 +0100 1.3 @@ -43,6 +43,7 @@ 1.4 asm volatile ( \ 1.5 "call hypercall_page + ("STR(__HYPERVISOR_##name)" * 32)"\ 1.6 : "=a" (__res) \ 1.7 + : \ 1.8 : "memory" ); \ 1.9 (type)__res; \ 1.10 })
2.1 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/hypercall.h Tue Jan 24 18:08:11 2006 +0100 2.2 +++ b/linux-2.6-xen-sparse/include/asm-xen/asm-x86_64/hypercall.h Wed Jan 25 11:08:33 2006 +0100 2.3 @@ -46,6 +46,7 @@ 2.4 asm volatile ( \ 2.5 "call hypercall_page + ("STR(__HYPERVISOR_##name)" * 32)"\ 2.6 : "=a" (__res) \ 2.7 + : \ 2.8 : "memory" ); \ 2.9 (type)__res; \ 2.10 }) 2.11 @@ -287,12 +288,6 @@ HYPERVISOR_vcpu_op( 2.12 } 2.13 2.14 static inline int 2.15 -HYPERVISOR_iret(void) 2.16 -{ 2.17 - return _hypercall0(int, iret); 2.18 -} 2.19 - 2.20 -static inline int 2.21 HYPERVISOR_set_segment_base( 2.22 int reg, unsigned long value) 2.23 {
3.1 --- a/xen/arch/x86/x86_64/traps.c Tue Jan 24 18:08:11 2006 +0100 3.2 +++ b/xen/arch/x86/x86_64/traps.c Wed Jan 25 11:08:33 2006 +0100 3.3 @@ -293,9 +293,9 @@ void hypercall_page_initialise(void *hyp 3.4 * calling it. 3.5 */ 3.6 p = (char *)(hypercall_page + (__HYPERVISOR_iret * 32)); 3.7 - *(u8 *)(p+ 0) = 0x50; /* push %rax */ 3.8 - *(u8 *)(p+ 1) = 0x51; /* push %rcx */ 3.9 - *(u16 *)(p+ 2) = 0x5341; /* push %r11 */ 3.10 + *(u8 *)(p+ 0) = 0x51; /* push %rcx */ 3.11 + *(u16 *)(p+ 1) = 0x5341; /* push %r11 */ 3.12 + *(u8 *)(p+ 3) = 0x50; /* push %rax */ 3.13 *(u8 *)(p+ 4) = 0xb8; /* mov $__HYPERVISOR_iret,%eax */ 3.14 *(u32 *)(p+ 5) = __HYPERVISOR_iret; 3.15 *(u16 *)(p+ 9) = 0x050f; /* syscall */