WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-ia64-devel

Re: [Xen-ia64-devel] pv_ops: ministate.h typo fix

Hi Eddie.
The attached patches does many things. Could you explain?

- convert cover argument in SAVE_MIN_WITH_COVER(_R19) into COVER.
  This seems correct. I'll take this part.

- convert __COVER argument into COVER.
  Using conflicting argument is a bad practice.

- shuffle instructions of XEN_BSW_1 and xen DO_XEN_MIN().
  Is this for producing better bundles? Please ellaborate on this.
  If so, I'll take as another patch.

- churning header file inclusion.
  I need to rethink to do this with another mail you posted as
  where to compile. I'll answer it to that mail.
  I'm now inclined to move ia64/kernel/minstate.h under
  include/asm-ia64/native/.

On Fri, Mar 21, 2008 at 03:17:04PM +0800, Dong, Eddie wrote:
> 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 */


> _______________________________________________
> Xen-ia64-devel mailing list
> Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-ia64-devel

-- 
yamahata

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