Date: 1 Dec 1999 12:59:54 -0000 From: Ville-Pertti Keinonen <will@iki.fi> To: marcel@scc.nl Cc: dillon@apollo.backplane.com, bde@zeta.org.au, current@FreeBSD.ORG Subject: Re: kernel: -mpreferred-stack-boundary=2 ?? Message-ID: <19991201125954.29674.qmail@ns.demophon.com> In-Reply-To: <384510E6.6FB29574@scc.nl> (message from Marcel Moolenaar on Wed, 01 Dec 1999 13:13:26 %2B0100)
next in thread | previous in thread | raw e-mail | index | archive | help
> The stack must be aligned before the return address is pushed: > > The following C fragment > f(1); > f(2); > > Translates to > > addl $-12,%esp > pushl $1 > call f > addl $16,%esp > addl $-12,%esp > pushl $2 > call f > addl $16,%esp > > This assumes the stack is already aligned, of course. That just keeps it aligned the same, *relatively*. You have to cause the compiler to generate something that must be aligned to a 16-byte boundary to figure out at which point the stack pointer is assumed to be aligned. In fact, I think that the stack is aligned after pushing the previous frame pointer, a 4-word struct with __attribute__((aligned(16))) is placed starting at -32(%ebp). To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19991201125954.29674.qmail>