Thomas Gleixner wrote:

> While testing various kernel configs we found out that the problem
> comes and goes. Finally I started to compare the gcc command line
> options and after some fiddling it turned out that the following
> minimal deltas change the code generator behaviour:
> 
> Bad:  -march=pentium-mmx                -Wa,-mtune=generic32
> Good: -march=i686        -mtune=generic -Wa,-mtune=generic32
> Good: -march=pentium-mmx -mtune-generic -Wa,-mtune=generic32
> 
> I'm not supposed to understand the logic behind that, right ?

I don't either.  I'm seeing:

timer_stats_update_stats:                                       
timer_stats_update_stats:
        pushl   %edi                                          <
        leal    8(%esp), %edi                                 <
        andl    $-16, %esp                                    <
        pushl   -4(%edi)                                      <
        pushl   %ebp                                                    pushl   
%ebp
        movl    %esp, %ebp                                              movl    
%esp, %ebp
        pushl   %edi                                          |         andl    
$-16, %esp
        pushl   %esi                                          |         subl    
$112, %esp
        pushl   %ebx                                          |         movl    
%ebx, 100(%esp)
        subl    $108, %esp                                    |         movl    
%esi, 104(%esp)
                                                              >         movl    
%edi, 108(%esp)
        call    mcount                                                  call    
mcount

where the only difference is -mtune=generic.  I'm investigating.

Andrew.

Reply via email to