Messages in this thread | | | Date | Wed, 4 Mar 2009 20:33:53 +0100 | From | Johannes Weiner <> | Subject | Re: [patch -v2] flat: fix data sections alignment |
| |
On Wed, Mar 04, 2009 at 01:04:00PM -0500, Mike Frysinger wrote: > On Wed, Mar 4, 2009 at 08:51, Johannes Weiner wrote: > > The flat loader uses an architecture's flat_stack_align() to align the > > stack but assumes word-alignment is enough for the data sections. > > > > However, on the Xtensa S6000 we have registers up to 128bit width > > which can be used from userspace and therefor need userspace stack and > > data-section alignment of at least this size. > > could this perhaps be a gcc problem ? x86 has a similar problem with > sse and they addressed it with a function attribute. after all, just > because your stack started out 128bit aligned doesnt mean gcc will > keep it that way when calling other functions. so having the stack > start out aligned would only "fix" the stack for the application's > entry point right (which would in practice bubble up to main()) ? so > you'd be right back where you started ...
gcc generates sp changes only ever in multiples of 16 deltas, I just checked it again with various amounts of stack variables.
The stack frames allocate themselves with an ENTRY instruction and the generated code I read here allocates stack frames of n * 16 bytes.
So we are good to go as long as the initial stack frame is properly aligned.
> -mike
Hannes
| |