Thank you for the elaboration. Now I see the issues.
On Fri, Dec 22, 2006 at 10:13:33AM +0800, Xu, Anthony wrote:
> Isaku Yamahata write on 2006年12月21日 17:41:
> > On Thu, Dec 21, 2006 at 01:13:45PM +0800, Xu, Anthony wrote:
> >
> > Could you elaborate?
> > I don't see why it causes booting trouble and masking vpsr resolves
> > it.
>
> Hi Isaku,
>
> __kernel_syscall_via_epc will call fsys_bubble_down
>
> Below code is used to form cr.ipsr
> It wants to set ipsr.ri=1,
>
> If (r29).ri=0 or 1, that's ok
> But if (r29).ri=2, then ipsr.ri=3 issue happens
>
>
> /*
> * Reading psr.l gives us only bits 0-31, psr.it, and psr.mc.
> * The rest we have to synthesize.
> */
> # define PSR_ONE_BITS ((3 << IA64_PSR_CPL0_BIT) \
> | (0x1 << IA64_PSR_RI_BIT) \
> | IA64_PSR_BN | IA64_PSR_I)
>
> movl r8=PSR_ONE_BITS // X
> ;;
> mov r25=ar.unat // M2 (5 cyc) save ar.unat
> mov r19=b6 // I0 save b6 (2 cyc)
> mov r20=r1 // A save caller's gp in r20
> ;;
> or r29=r8,r29 // A construct cr.ipsr value
> to save
> mov b6=r18 // I0 copy syscall
> entry-point to b6 (7 cyc)
>
> _______________________________________________
> 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
|