On Thu, 19 Nov 2009, Linus Torvalds wrote: > On Thu, 19 Nov 2009, Richard Guenther wrote: > > > > Note that I only can reproduce the issue with > > -mincoming-stack-boundary=2, not with -mpreferred-stack-boundary=2. > > Since you can reproduce it with -mincoming-stack-boundary=2, I woul > suggest just fixing mcount handling that way regardless of anything else. > The current code generated by gcc is just insane - even for the case where > you _want_ 16-byte stack alignment. > > Instead crazy code like > > > push %edi > > lea 0x8(%esp),%edi > > and $0xfffffff0,%esp > > pushl -0x4(%edi) > > push %ebp > > mov %esp,%ebp > > ... > > call mcount > > the sane thing to do would be to just do it as > > push %ebp > mov %esp,%ebp > call mcount > and $0xfffffff0,%esp
which is what the 64bit compile does except that the mcount call happens a bit later which is fine. ffffffff8107cd34 <timer_stats_update_stats>: ffffffff8107cd34: 55 push %rbp ffffffff8107cd35: 48 89 e5 mov %rsp,%rbp ffffffff8107cd38: 48 83 e4 c0 and $0xffffffffffffffc0,%rsp Thanks, tglx