[bfin] Don't load the address of counter variable before calling _mcount ()

Jie Zhang jzhang918@gmail.com
Tue Nov 7 16:58:00 GMT 2006

Bernd Schmidt wrote:
> Jie Zhang wrote:
>> To load the address of counter variable may clobber the value of P1, 
>> which is set up in function prologue, since the instrument code is 
>> inserted after prologue. To fix it, we could save P1 on stack before 
>> loading the address of counter variable into P1 and pop it from stack 
>> after _mcount return. But there is only one project using -pg on 
>> Blackfin and it does not require the address of counter variable, so 
>> the simpler way is not to load the address into P1 at all.
> Maybe we could just define PROFILE_BEFORE_PROLOGUE?
I thought about this. In GCC internals manual, it's said that "The
details of how mcount expects to be called are determined by your
operating system environment, not by GCC." But there is no existing 
system for Blackfin using mcount, so we have nothing we can refer to. So 
I decided to follow the most common practice of other ports in GCC. Also 
in GCC internals, it states that "This (no need for counter variable) is 
true for almost all modern implementations." For Blackfin, adeos-tracer 
is the only program using and providing mcount. And it does not need the 
counter variable. Also the internals manual says that "Normally, the 
profiling code comes after (function prologue)." So I chose the way as 
in my patch.


More information about the Gcc-patches mailing list