Hi, I have a code that alternates between 2 funcs unlimitedly. I am curious to know the following lines in switch_to() as to what it does if(!called_once[1] && func==1) { asm("movl %0,%%esp\n\t"\ : "=m"(func_stack)); called_once[func]=1; Also, can anyone give me a suggestion as to what needs to be done for getting this sequence main to A; A to main; /* jump back to main without finishing A */ main to B; B to main; /* jump back to main without finishing A */ main to A; /* without calling A */ .... .... Thanks Prasanta