[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] x86 hvm: Enable 6-argument hypercalls
# HG changeset patch # User Keir Fraser <keir@xxxxxxx> # Date 1292411861 0 # Node ID 532d4a2d197ecc81343d98ed97c71d7cd12cef63 # Parent 4c180ed8d04440864eea5ffd1707b6bfb2d6cb22 x86 hvm: Enable 6-argument hypercalls Enable 6 argument hypercalls for HVMs. The hypercall code handles a sixth argument in EBP or R9 but the HVM code is not passing the value. Signed-off-by: Ross Philipson <ross.philipson@xxxxxxxxxx> --- xen/arch/x86/hvm/hvm.c | 18 +++++++++++------- 1 files changed, 11 insertions(+), 7 deletions(-) diff -r 4c180ed8d044 -r 532d4a2d197e xen/arch/x86/hvm/hvm.c --- a/xen/arch/x86/hvm/hvm.c Wed Dec 15 11:09:02 2010 +0000 +++ b/xen/arch/x86/hvm/hvm.c Wed Dec 15 11:17:41 2010 +0000 @@ -2522,7 +2522,8 @@ static long hvm_vcpu_op( } typedef unsigned long hvm_hypercall_t( - unsigned long, unsigned long, unsigned long, unsigned long, unsigned long); + unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, + unsigned long); #define HYPERCALL(x) \ [ __HYPERVISOR_ ## x ] = (hvm_hypercall_t *) do_ ## x @@ -2672,30 +2673,33 @@ int hvm_do_hypercall(struct cpu_user_reg #ifdef __x86_64__ if ( mode == 8 ) { - HVM_DBG_LOG(DBG_LEVEL_HCALL, "hcall%u(%lx, %lx, %lx, %lx, %lx)", eax, - regs->rdi, regs->rsi, regs->rdx, regs->r10, regs->r8); + HVM_DBG_LOG(DBG_LEVEL_HCALL, "hcall%u(%lx, %lx, %lx, %lx, %lx, %lx)", + eax, regs->rdi, regs->rsi, regs->rdx, + regs->r10, regs->r8, regs->r9); curr->arch.hvm_vcpu.hcall_64bit = 1; regs->rax = hvm_hypercall64_table[eax](regs->rdi, regs->rsi, regs->rdx, regs->r10, - regs->r8); + regs->r8, + regs->r9); curr->arch.hvm_vcpu.hcall_64bit = 0; } else #endif { - HVM_DBG_LOG(DBG_LEVEL_HCALL, "hcall%u(%x, %x, %x, %x, %x)", eax, + HVM_DBG_LOG(DBG_LEVEL_HCALL, "hcall%u(%x, %x, %x, %x, %x, %x)", eax, (uint32_t)regs->ebx, (uint32_t)regs->ecx, (uint32_t)regs->edx, (uint32_t)regs->esi, - (uint32_t)regs->edi); + (uint32_t)regs->edi, (uint32_t)regs->ebp); regs->eax = hvm_hypercall32_table[eax]((uint32_t)regs->ebx, (uint32_t)regs->ecx, (uint32_t)regs->edx, (uint32_t)regs->esi, - (uint32_t)regs->edi); + (uint32_t)regs->edi, + (uint32_t)regs->ebp); } HVM_DBG_LOG(DBG_LEVEL_HCALL, "hcall%u -> %lx", _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |