# HG changeset patch
# User Alex Williamson <alex.williamson@xxxxxx>
# Date 1189544973 21600
# Node ID 42caadb14edb069e8d488c7b84786c110d05bb40
# Parent c94683db19e9541409f759142be9d8dc67c444db
[IA64] Make Big-Endian appliation run on top of dom0 and domU
Signed-off-by: Anthony Xu <anthony.xu@xxxxxxxxx>
---
xen/arch/ia64/xen/faults.c | 10 +++++++++-
1 files changed, 9 insertions(+), 1 deletion(-)
diff -r c94683db19e9 -r 42caadb14edb xen/arch/ia64/xen/faults.c
--- a/xen/arch/ia64/xen/faults.c Tue Sep 11 15:07:42 2007 -0600
+++ b/xen/arch/ia64/xen/faults.c Tue Sep 11 15:09:33 2007 -0600
@@ -94,7 +94,9 @@ static void reflect_interruption(unsigne
regs->cr_ipsr = vcpu_pl_adjust(regs->cr_ipsr, IA64_PSR_CPL0_BIT);
if (PSCB(v, dcr) & IA64_DCR_BE)
regs->cr_ipsr |= IA64_PSR_BE;
-
+ else
+ regs->cr_ipsr &= ~IA64_PSR_BE;
+
if (PSCB(v, hpsr_dfh))
regs->cr_ipsr |= IA64_PSR_DFH;
PSCB(v, vpsr_dfh) = 0;
@@ -140,6 +142,9 @@ void reflect_event(void)
regs->cr_ipsr = vcpu_pl_adjust(regs->cr_ipsr, IA64_PSR_CPL0_BIT);
if (PSCB(v, dcr) & IA64_DCR_BE)
regs->cr_ipsr |= IA64_PSR_BE;
+ else
+ regs->cr_ipsr &= ~IA64_PSR_BE;
+
if (PSCB(v, hpsr_dfh))
regs->cr_ipsr |= IA64_PSR_DFH;
@@ -241,6 +246,9 @@ void ia64_do_page_fault(unsigned long ad
IA64_PSR_CPL0_BIT);
if (PSCB(current, dcr) & IA64_DCR_BE)
regs->cr_ipsr |= IA64_PSR_BE;
+ else
+ regs->cr_ipsr &= ~IA64_PSR_BE;
+
if (PSCB(current, hpsr_dfh))
regs->cr_ipsr |= IA64_PSR_DFH;
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|