.globl __switch_to .type __switch_to, @function __switch_to: movl __current, %edx pushl %ebx pushl %ebp pushl %esi pushl %edi pushl RealModeSSSP pushl errno /* Hack! */ movl %esp, (%edx) movl %eax, __current movl (%eax), %esp popl errno popl RealModeSSSP popl %edi popl %esi popl %ebp popl %ebx ret .size __switch_to, .-__switch_to .globl __start_thread .type __start_thread, @function __start_thread: movl %edi, %eax /* Thread function argument */ pushl $0 /* For gdb's benefit */ movl %esp, %ebp /* For gdb's benefit */ pushl %ebx /* Set up the flags/interrupt state */ popfl call *%esi /* Run the desired function */ jmp __exit_thread /* If we get here, kill the thread */ .size __start_thread, .-__start_thread