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