On Sat, Dec 08, 2001 at 09:52:01PM +0100, Andreas Jaeger wrote: > Daniel Jacobowitz <dan@debian.org> writes: > > > On Sat, Dec 08, 2001 at 04:18:53PM +0100, Andreas Jaeger wrote: > >> > " bltzal $0, here\n" > >> > " nop\n" > >> > "here: subu %0, $31, %0\n" > >> > >> Subtract shared address of "here" from address of "here" at build time > >> - and you know at which address byte 0 of the shared library is > >> loaded. > > > > Wait a second. Does bltzal fill in $31 even on a not-taken branch? > > Because bltzal $0 should never be taken. My handy MIPS reference and > > SPIM seem to agree that it won't fill in $31. > > I just checked the MIPS R4000 Microprocessor Manual, 2nd Ed. by Joe > Heinrich and it mentions "Unconditanally, the address of the > instruction after the delay slot is placed in the link register, $31". > Therefore the code is correct. OK, thanks. Yet another thing that changed between my simulator and my hardware :) -- Daniel Jacobowitz Carnegie Mellon University MontaVista Software Debian GNU/Linux Developer