[prev in list] [next in list] [prev in thread] [next in thread] 

List:       linux-kernel
Subject:    Re: [3/10 PATCH] inline wake_up_bit
From:       Denys Vlasenko <vda.linux () googlemail ! com>
Date:       2008-06-25 20:37:58
Message-ID: 200806252237.58046.vda.linux () googlemail ! com
[Download RAW message or body]

On Wednesday 25 June 2008 18:01, Mikulas Patocka wrote:
> > Ingo's suggestion to talk to gcc people to remedy
> > insane call convention sounds as a more workable solution.
> >
> > BTW, i386 uses regparm call convention, is similar trick
> > possible for sparc64?
> 
> Sparc64 has register windows: it passes arguments in registers, but it 
> must allocate space for that registers. If the call stack is too deep (8 
> levels), the CPU runs out of registers and starts spilling the registers 
> of the function 8-levels-deep to the stack.
> 
> The stack usage could be reduced to 176 bytes with little work from gcc 
> developers and to 128 bytes with more work (ABI change). If you wanted to 

Wow, it's nearly x2 reduction.

ABI change in not a problem for kernel, since it is a "freestanding
application". Exactly like i386 switched to regparm, which is a different ABI.

> go below 128 bytes, you could use one register to indicate number of used 
> registers and modify the spill/fill handlers to load only that number of 
> registers and reduce the stack usage even more --- that would be a big 
> code change in both gcc and linux.
--
vda
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic