Re: i386 ABI and the stack

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On Fri, 23 Jun 2006, H. Peter Anvin wrote:
> > 
> > The x86-64 ABI has a 128-byte(*) zone that is safe from signals etc, so you
> > can use a small amount of stack below the stackpointer safely. Not so on
> > x86.
> 
> Adding a small redzone like this to i386 would be easy, though -- just drop
> the stack pointer by that much when creating a signal frame.  128 bytes isn't
> enough to interfere with libraries.

However, any binaries created with that in mind would be 
buggy-by-definition on older kernels, so I don't think it's worth it. 

> Unlike other enhancements that have been proposed to the i386 ABI (like
> regparm), this has the advantage of being fully backwards-compatible with old
> binaries and libraries.

Right, but it's not backwards-compatible with old kernels ;(

So any user space app that does it would have to be pretty crazy.

I don't think it's a huge advantage anyway. x86 CPU's are really good at 
tracking %esp - there are papers out there that talk about how %esp is the 
limiter for effective IPC, but modern x86 CPU's will generally have ways 
around it, so in _practice_ I think you can do

	subl $16,%esp
	movl %eax,4(%esp)

without having any address stall on the subtract on most modern CPU cores 
(because the core will break the dependency and track %esp specially).

That's the Yonah "stack engine", afaik. And I could obviously name other 
CPU's that does it too, but I probably shouldn't ;)

		Linus
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux