On Fri, Jul 27, 2001 at 02:48:20AM +0200, Thiemo Seufer wrote:
> Daniel Jacobowitz wrote:
> > _mcount was doing awful things to its caller's stack frame.
>
> Maybe I'm missing something, but both the old and the new code
> add 8 byte more to sp than they subtracted before. How is this
> supposed to work?
It's supposed to do that, according to GCC. Build something with -S
-pg and look at it.
> [snip]
> > I think this is close enough; it only adds
> > one instruction. Is this OK?
>
> Why do you save and restore $6, $7, seemingly without using them?
Because they were already there; I was trying to keep this patch
minimal. My MIPS assembly knowledge, as I said, is a little scanty.
> > Do I need a "nop" after the subu?
>
> It works here since it is expanded in an
>
> addiu $29,$29,-40
>
> which is executed in one cycle. The usual suspects for hazards
> to be NOPed are load/store insns and branches.
Ahh, OK. I see.
> [snip]
> > + "sw $31,20($29);" \
> > "move $5,$31;" \
> > "jal __mcount;" \
> > "move $4,$1;" \
> ^
> Some stylistic issue: In ".set noreorder" assembly it helps to
> indent the insns in a branch delay slot by one blank to avoid
> confusion about their non-sequential nature.
--
Daniel Jacobowitz Carnegie Mellon University
MontaVista Software Debian GNU/Linux Developer
|