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