Steven Rostedt wrote: > On Thu, 2009-11-19 at 18:20 +0000, Andrew Haley wrote: > >> OK, I found it. There is a struct defined as >> >> struct entry { >> ... >> } __attribute__((__aligned__((1 << (4))))); >> >> and then in timer_stats_update_stats you have a local variable of type >> struct entry: >> >> void timer_stats_update_stats() >> { >> spinlock_t *lock; >> struct entry *entry, input; >> >> So, gcc has to 16-align the stack pointer to satisfy the alignment >> for struct entry. > > It has to align the entire stack? Why not just the variable within the > stack?
How?. gcc has to know, at compile time, the offset from sp of each variable. So, it of course makes sure that offset is 16-aligned, but it also has to 16-align the stack pointer. Andrew.