That's not nice code from the compiler (suboptimal), but it'll work. leal -24(%ebp),%esp is perfectly ok in the epilogue of a function. You're right that %esp is lost -- in this case, %ebp has effectively the same information. Think like this: a perfectly normal function (without switch_to) can have this: f: pushl %ebp movl %esp,%ebp pushl %ebx ... do stuff, decrement %esp a lot to call functions etc. etc. ... movl -4(%ebp),%esp popl %ebx popl %ebp ret Parity Error wrote: > in schedule(), switch_to() macro changes esp to > the new process's stack. But, on exit frm schedule, > how come it does not get overwritten with ebp-24, > as the dissasembled code shows. The code was compiled > without the -fomit-frame-pointer. > > pushl 508(%ecx) > jmp __switch_to > 1: popl %ebp > popl %edi > popl %esi > > jmp .L1180 > > .L1180: > leal -24(%ebp),%esp > popl %ebx > popl %esi > popl %edi > movl %ebp,%esp > popl %ebp > ret - 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/