# HG changeset patch
# User awilliam@xxxxxxxxxxx
# Node ID 446402805fd9d50482c8be15479a682c362b518e
# Parent be1b7896c203bfa33858d2e6de3d37905181c895
[IA64] Fix MINSTATE_START/END_SAVE_MIN_PHYS for INIT handler
- THIS_CPU(ia64_mca_data) have physcal address of each cpu's ia64_mca_cpu.
I computed address of init_stack by using it.
- from dep r12=-1,r12,61,3; to dep r12=-1,r12,60,4;
to computed xen virtual address.
Signed-off-by: Akio Takebe <takebe_akio@xxxxxxxxxxxxxx>
---
xen/arch/ia64/linux-xen/minstate.h | 29 +++++++++++++++++++++++++++--
1 files changed, 27 insertions(+), 2 deletions(-)
diff -r be1b7896c203 -r 446402805fd9 xen/arch/ia64/linux-xen/minstate.h
--- a/xen/arch/ia64/linux-xen/minstate.h Thu Jul 06 10:23:34 2006 -0600
+++ b/xen/arch/ia64/linux-xen/minstate.h Thu Jul 06 10:32:26 2006 -0600
@@ -36,7 +36,31 @@
* For mca_asm.S we want to access the stack physically since the state is
saved before we
* go virtual and don't want to destroy the iip or ipsr.
*/
-#define MINSTATE_START_SAVE_MIN_PHYS
\
+#ifdef XEN
+# define MINSTATE_START_SAVE_MIN_PHYS
\
+(pKStk) movl r3=THIS_CPU(ia64_mca_data);;
\
+(pKStk) tpa r3 = r3;;
\
+(pKStk) ld8 r3 = [r3];;
\
+(pKStk) addl r3=IA64_MCA_CPU_INIT_STACK_OFFSET,r3;;
\
+(pKStk) addl r1=IA64_STK_OFFSET-IA64_PT_REGS_SIZE,r3;
\
+(pUStk) mov ar.rsc=0; /* set enforced lazy mode, pl 0,
little-endian, loadrs=0 */ \
+(pUStk) addl r22=IA64_RBS_OFFSET,r1; /* compute base of
register backing store */ \
+ ;;
\
+(pUStk) mov r24=ar.rnat;
\
+(pUStk) addl r1=IA64_STK_OFFSET-IA64_PT_REGS_SIZE,r1; /* compute base
of memory stack */ \
+(pUStk) mov r23=ar.bspstore; /* save
ar.bspstore */ \
+(pUStk) dep r22=-1,r22,60,4; /* compute Xen virtual
addr of RBS */ \
+ ;;
\
+(pUStk) mov ar.bspstore=r22; /* switch to Xen RBS */
\
+ ;;
\
+(pUStk) mov r18=ar.bsp;
\
+(pUStk) mov ar.rsc=0x3; /* set eager mode, pl 0, little-endian,
loadrs=0 */ \
+
+# define MINSTATE_END_SAVE_MIN_PHYS
\
+ dep r12=-1,r12,60,4; /* make sp a Xen virtual address */
\
+ ;;
+#else
+# define MINSTATE_START_SAVE_MIN_PHYS
\
(pKStk) mov r3=IA64_KR(PER_CPU_DATA);;
\
(pKStk) addl r3=THIS_CPU(ia64_mca_data),r3;;
\
(pKStk) ld8 r3 = [r3];;
\
@@ -55,9 +79,10 @@
(pUStk) mov r18=ar.bsp;
\
(pUStk) mov ar.rsc=0x3; /* set eager mode, pl 0, little-endian,
loadrs=0 */ \
-#define MINSTATE_END_SAVE_MIN_PHYS
\
+# define MINSTATE_END_SAVE_MIN_PHYS
\
dep r12=-1,r12,61,3; /* make sp a kernel virtual address */
\
;;
+#endif /* XEN */
#ifdef MINSTATE_VIRT
#ifdef XEN
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|