I've put a project proposal for split stacks on the wiki at http://gcc.gnu.org/wiki/SplitStacks . The idea is to permit the stack of a single thread to be split into discontiguous segments, thus permitting many more threads to be active at one time without worrying about stack overflow or about wasting lots of stack space for inactive threads. The compiler would have to generate code to support detecting when new stack space is needed, and to deal with some of the consequences of moving to a new stack.
I would be interested in hearing comments about this. I'm not currently working on this, but I may start working on it at some point. Ian