So, ask gcc developers to do kernel-specific ABI with only 128-byte stack
frame.
BTW. could some gcc developer explain the reason for additional 16-bytes
on stack on sparc64? 64-bit ABI mandates 176 bytes, but gcc allocates 192
bytes.
Even worse, gcc doesn't use these additional bytes. If you try this:
extern void f(int *i);
void g()
{
int a;
f(&a);
}
, it allocates additional 16 bytes for the variable "a" (so there's total
208 bytes), even though it could place the variable into 48-byte
ABI-mandated area that it inherited from the caller or into it's own
16-byte padding that it made when calling "f".
Mikulas
--