The MACRO parameter COVER in DO_SAVE_MIN won't
be replaced by COVER macro in inst.h since it is already
replaced when compiler extend SAVE_MIN_WITH_COVER
macro etc.
Thanks, eddie
Fix DO_SAVE_MIN macro typo, and move some
instructions to make bundle compact.
Signed-off-by: Yaozu (Eddie) Dong <eddie.dong@xxxxxxxxx>
diff --git a/arch/ia64/kernel/ivt.S b/arch/ia64/kernel/ivt.S
index d1cebe5..f2306ae 100644
--- a/arch/ia64/kernel/ivt.S
+++ b/arch/ia64/kernel/ivt.S
@@ -75,7 +75,6 @@
# define DBG_FAULT(i)
#endif
-#include "inst_paravirt.h"
#include "minstate.h"
#define FAULT(n)
\
diff --git a/arch/ia64/kernel/minstate.h b/arch/ia64/kernel/minstate.h
index 10a412c..9e18fb0 100644
--- a/arch/ia64/kernel/minstate.h
+++ b/arch/ia64/kernel/minstate.h
@@ -2,6 +2,7 @@
#include <asm/cache.h>
#include "entry.h"
+#include "inst_paravirt.h"
#ifdef __IA64_ASM_PARAVIRTUALIZED_NATIVE
/*
@@ -29,7 +30,7 @@
* Note that psr.ic is NOT turned on by this macro. This is so that
* we can pass interruption state as arguments to a handler.
*/
-#define DO_SAVE_MIN(__COVER,SAVE_IFS,EXTRA)
\
+#define DO_SAVE_MIN(COVER,SAVE_IFS,EXTRA)
\
mov r16=IA64_KR(CURRENT); /* M */
\
mov r27=ar.rsc; /* M */
\
mov r20=r1; /* A */
\
@@ -38,7 +39,7 @@
mov r26=ar.pfs; /* I */
\
MOV_FROM_IIP(r28); /* M */
\
mov r21=ar.fpsr; /* M */
\
- __COVER; /* B;; (or nothing) */
\
+ COVER; /* B;; (or nothing) */
\
;;
\
adds r16=IA64_TASK_THREAD_ON_USTACK_OFFSET,r16;
\
;;
\
@@ -194,6 +195,6 @@
st8 [r25]=r10; /* ar.ssd */ \
;;
-#define SAVE_MIN_WITH_COVER DO_SAVE_MIN(cover, mov r30=cr.ifs,)
-#define SAVE_MIN_WITH_COVER_R19 DO_SAVE_MIN(cover, mov
r30=cr.ifs, mov r15=r19)
+#define SAVE_MIN_WITH_COVER DO_SAVE_MIN(COVER, mov r30=cr.ifs,)
+#define SAVE_MIN_WITH_COVER_R19 DO_SAVE_MIN(COVER, mov
r30=cr.ifs, mov r15=r19)
#define SAVE_MIN DO_SAVE_MIN( , mov r30=r0, )
diff --git a/arch/ia64/xen/xenivt.S b/arch/ia64/xen/xenivt.S
index 2d509f2..17987af 100644
--- a/arch/ia64/xen/xenivt.S
+++ b/arch/ia64/xen/xenivt.S
@@ -13,9 +13,8 @@
#include <asm/kregs.h>
#include <asm/pgtable.h>
-#include <asm/xen/inst.h>
-#include <asm/xen/minstate.h>
#include "../kernel/minstate.h"
+#include <asm/xen/minstate.h>
.section .text,"ax"
GLOBAL_ENTRY(xen_event_callback)
diff --git a/include/asm-ia64/xen/inst.h b/include/asm-ia64/xen/inst.h
index a8fb2ac..1e92d02 100644
--- a/include/asm-ia64/xen/inst.h
+++ b/include/asm-ia64/xen/inst.h
@@ -414,10 +414,10 @@
movl r30 = XSI_B1NAT; \
;; \
ld8 r30 = [r30]; \
+ mov r31 = 1; \
;; \
mov ar.unat = r30; \
movl r30 = XSI_BANKNUM; \
- mov r31 = 1; \
;; \
st4 [r30] = r31; \
movl r30 = XSI_BANK1_R16; \
diff --git a/include/asm-ia64/xen/minstate.h
b/include/asm-ia64/xen/minstate.h
index 67bbf79..7cdebc2 100644
--- a/include/asm-ia64/xen/minstate.h
+++ b/include/asm-ia64/xen/minstate.h
@@ -25,17 +25,16 @@
* Note that psr.ic is NOT turned on by this macro. This is so that
* we can pass interruption state as arguments to a handler.
*/
-#define DO_SAVE_MIN(__COVER,SAVE_IFS,EXTRA)
\
+#define DO_SAVE_MIN(COVER,SAVE_IFS,EXTRA)
\
mov r16=IA64_KR(CURRENT); /* M */
\
mov r27=ar.rsc; /* M */
\
mov r20=r1; /* A */
\
mov r25=ar.unat; /* M */
\
MOV_FROM_IPSR(r29); /* M */
\
- mov r26=ar.pfs; /* I */
\
MOV_FROM_IIP(r28); /* M */
\
mov r21=ar.fpsr; /* M */
\
- __COVER; /* B;; (or nothing) */
\
- ;;
\
+ mov r26=ar.pfs; /* I */
\
+ COVER; /* B;; (or nothing) */
\
adds r16=IA64_TASK_THREAD_ON_USTACK_OFFSET,r16;
\
;;
\
ld1 r17=[r16]; /* load
current->thread.on_ustack flag */ \
@@ -80,17 +79,17 @@
.mem.offset 8,0; st8.spill [r17]=r9,16;
\
;;
\
.mem.offset 0,0; st8.spill [r16]=r10,24;
\
+ movl r8=XSI_PRECOVER_IFS;
\
.mem.offset 8,0; st8.spill [r17]=r11,24;
\
;;
\
/* xen special handling for possibly lazy cover */
\
/* XXX: SAVE_MIN case in dispatch_ia32_handler: mov r30=r0 */
\
- movl r8=XSI_PRECOVER_IFS;
\
;;
\
ld8 r30=[r8];
\
- ;;
\
+(pUStk) sub r18=r18,r22; /* r18=RSE.ndirty*8 */
\
st8 [r16]=r28,16; /* save cr.iip */
\
+ ;; \
st8 [r17]=r30,16; /* save cr.ifs */
\
-(pUStk) sub r18=r18,r22; /* r18=RSE.ndirty*8 */
\
mov r8=ar.ccv;
\
mov r9=ar.csd;
\
mov r10=ar.ssd;
\
@@ -131,7 +130,5 @@
adds r2=IA64_PT_REGS_R16_OFFSET,r1;
\
;;
\
movl r1=__gp; /* establish kernel global pointer */
\
- ;;
\
- /*bsw.1;*/ /* switch back to bank 1 (must be last
in insn group) */ \
;;
#endif /* __IA64_ASM_PARAVIRTUALIZED_XEN */
minstate_fix2.patch
Description: minstate_fix2.patch
_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel
|