[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] Fix read of guest psr to properly set dfh and other bits (by Matt Chapman)



# HG changeset patch
# User djm@xxxxxxxxxxxxxxx
# Node ID 84f9bec4feaf996671eabd83694ea19a3bdbbaaf
# Parent  14393678d999399af2b63617f01b18ec83948ae8
Fix read of guest psr to properly set dfh and other bits (by Matt Chapman)

diff -r 14393678d999 -r 84f9bec4feaf xen/arch/ia64/xen/vcpu.c
--- a/xen/arch/ia64/xen/vcpu.c  Fri Nov 18 16:58:03 2005
+++ b/xen/arch/ia64/xen/vcpu.c  Fri Nov 18 17:04:58 2005
@@ -345,19 +345,17 @@
 
 IA64FAULT vcpu_get_psr(VCPU *vcpu, UINT64 *pval)
 {
-       UINT64 psr;
+       REGS *regs = vcpu_regs(vcpu);
        struct ia64_psr newpsr;
 
-       // TODO: This needs to return a "filtered" view of
-       // the psr, not the actual psr.  Probably the psr needs
-       // to be a field in regs (in addition to ipsr).
-       __asm__ __volatile ("mov %0=psr;;" : "=r"(psr) :: "memory");
-       newpsr = *(struct ia64_psr *)&psr;
+       newpsr = *(struct ia64_psr *)&regs->cr_ipsr;
        if (newpsr.cpl == 2) newpsr.cpl = 0;
        if (PSCB(vcpu,interrupt_delivery_enabled)) newpsr.i = 1;
        else newpsr.i = 0;
        if (PSCB(vcpu,interrupt_collection_enabled)) newpsr.ic = 1;
        else newpsr.ic = 0;
+       if (PSCB(vcpu,metaphysical_mode)) newpsr.dt = 0;
+       else newpsr.dt = 1;
 // FIXME: need new field in mapped_regs_t for virtual psr.pp (psr.be too?)
        if (PSCB(vcpu,tmp[8])) newpsr.pp = 1;
        else newpsr.pp = 0;

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.