# HG changeset patch
# User Jimi Xenidis <jimix@xxxxxxxxxxxxxx>
# Node ID e7ea062a50863c02498fa3ca63e7cf578a7e6937
# Parent d9e8012184b8cb65fe70baaa3c8cd1c6d0a60f55
[POWERPC][XEN] move setting of MSR[RI] till after SRR0/1
This also frees up space so we can properly/safely blow away larx/stcx
reservations.
Signed-off-by: Jimi Xenidis <jimix@xxxxxxxxxxxxxx>
---
xen/arch/powerpc/powerpc64/exceptions.S | 22 ++++++++++++++++------
1 files changed, 16 insertions(+), 6 deletions(-)
diff -r d9e8012184b8 -r e7ea062a5086 xen/arch/powerpc/powerpc64/exceptions.S
--- a/xen/arch/powerpc/powerpc64/exceptions.S Fri Sep 01 13:14:53 2006 -0400
+++ b/xen/arch/powerpc/powerpc64/exceptions.S Tue Sep 05 15:25:06 2006 -0400
@@ -116,12 +116,8 @@ 1:
std r0, UREGS_r13(r1) /* save R13 from HSPRG1 */
/* Blow away any reservation according to 970 errata after saving CR */
- stdcx. r1, 0, r1
-
- /* done with processor_area; re-enable MSR:RI */
- mfmsr r0
- ori r0, r0, MSR_RI@l
- mtmsrd r0
+ ldx r0, 0, r1
+ stdcx. r0, 0, r1
/* save CTR and use it to jump */
mfctr r0
@@ -147,6 +143,13 @@ 1:
li r0, -1 /* we clobbered the OS's SRR0/SRR1 to get here. */
std r0, UREGS_srr0(\uregs)
std r0, UREGS_srr1(\uregs)
+
+ /* done with processor_area; re-enable MSR:RI */
+ mfmsr r0
+ ori r0, r0, MSR_RI@l
+ mtmsrd r0
+
+
.endm
/* For exceptions that use HSRR0/1 (preserving the OS's SRR0/1). */
@@ -167,6 +170,12 @@ 1:
std r0, UREGS_srr0(\uregs)
mfspr r0, SPRN_SRR1
std r0, UREGS_srr1(\uregs)
+
+ /* done with processor_area; re-enable MSR:RI */
+ mfmsr r0
+ ori r0, r0, MSR_RI@l
+ mtmsrd r0
+
.endm
/* Hypervisor exception handling code; copied to physical address zero. */
@@ -374,6 +383,7 @@ ex_hcall_continued:
mfmsr r14
ori r14, r14, MSR_EE
xori r15, r14, MSR_EE
+
hcall_test_all_events:
mtmsrd r15, 1 /* disable interrupts */
ld r3, PAREA_vcpu(r13)
_______________________________________________
Xen-ppc-devel mailing list
Xen-ppc-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ppc-devel
|