Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 06 Feb 2002 19:39:59 -0800
From:      Peter Wemm <peter@wemm.org>
To:        Julian Elischer <julian@elischer.org>
Cc:        Andrew Gallatin <gallatin@cs.duke.edu>, Jake Burkholder <jake@locore.ca>, current@FreeBSD.ORG
Subject:   Re: Non 386 testers REALLY NEEDED 
Message-ID:  <20020207033959.A28D739F1@overcee.wemm.org>
In-Reply-To: <Pine.BSF.4.21.0202061748070.91961-100000@InterJet.elischer.org> 

next in thread | previous in thread | raw e-mail | index | archive | help
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 - peter@FreeBSD.org; peter@yahoo-inc.com; peter@netplex.com.au
"All of this is for nothing if we don't go to the stars" - JMS/B5


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020207033959.A28D739F1>