blob: ec3e0add8a0e81deef3a108f096d7ae81f03f99a [file] [log] [blame]
.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