Julian Elischer wrote:
>
>
> On Wed, 6 Feb 2002, Andrew Gallatin wrote:
>
> >
> > Jake Burkholder writes:
> > > > What's the "right" way to do this?
> > >
> > > I think you want lda, its used to load an address constant in support.s:
> > >
> > > lda t0, fusufault /* trap faults */
> >
> > Bingo! Thanks.. I haven't done any alpha assembler in nearly a year..
> >
> > Julian -- you need to add this to your diff:
> >
> >
> > Index: alpha/alpha/locore.s
> > ===================================================================
> > RCS file: /home/ncvs/src/sys/alpha/alpha/locore.s,v
> > retrieving revision 1.20
> > diff -u -r1.20 locore.s
> > --- alpha/alpha/locore.s 11 Dec 2001 23:33:38 -0000 1.20
> > +++ alpha/alpha/locore.s 7 Feb 2002 01:05:10 -0000
> > @@ -119,7 +119,7 @@
> > /*
> > * Switch to proc0's PCB.
> > */
> > - ldq t0,thread0 /* get phys addr of pcb */
> > + lda t0,thread0
> > ldq a0,TD_MD_PCBPADDR(t0)
> > SWITCH_CONTEXT
>
> Included.. thanks.
>
> >
> >
> > Buildworld fails in libkvm with the first diff... I assume
>
> THe following code is also wrong then..
>
> alloc r16=ar.pfs,0,0,1,0
> ;;
> movl out0=thread0
> ;;
> ld8 out0=[out0]
> ;;
> add out0=TD_PCB,out0
> in ia64/ia64/locore.s
>
>
>
> anyone know the correct instruction?
> leal out0=thread0 ?
Just delete the following:
ld8 out0=[out0]
;;
The "movl out0=thread0" instruction gets the constant address of thread0
into the out0- register. The "ld8 out0=[out0]" instruction dereferenced
it (which we want to stop), and the third "add out0=TD_PCB,out0" calculated
an offset within the thread0 struct.
ie: get rid of the deref.
Cheers,
-Peter
--
Peter Wemm - [EMAIL PROTECTED]; [EMAIL PROTECTED]; [EMAIL PROTECTED]
"All of this is for nothing if we don't go to the stars" - JMS/B5
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message