linux-mips
[Top] [All Lists]

Re: [patch] fix profiling in glibc for Linux/MIPS

To: Thiemo Seufer <ica2_ts@csv.ica.uni-stuttgart.de>
Subject: Re: [patch] fix profiling in glibc for Linux/MIPS
From: Daniel Jacobowitz <dan@debian.org>
Date: Thu, 26 Jul 2001 18:17:41 -0700
Cc: linux-mips@oss.sgi.com, linux-alpha@sources.redhat.com
In-reply-to: <20010727024820.B27008@rembrandt.csv.ica.uni-stuttgart.de>; from ica2_ts@csv.ica.uni-stuttgart.de on Fri, Jul 27, 2001 at 02:48:20AM +0200
References: <20010726103922.A6643@nevyn.them.org> <20010727024820.B27008@rembrandt.csv.ica.uni-stuttgart.de>
Sender: owner-linux-mips@oss.sgi.com
User-agent: Mutt/1.3.16i
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

<Prev in Thread] Current Thread [Next in Thread>