492 |
LEXT(thread_bootstrap_return) |
LEXT(thread_bootstrap_return) |
493 |
movl %esp,%ecx |
movl %esp,%ecx |
494 |
or $(KERNEL_STACK_SIZE-1),%ecx |
or $(KERNEL_STACK_SIZE-1),%ecx |
495 |
|
cli |
496 |
movl -3-IKS_SIZE(%ecx),%esp |
movl -3-IKS_SIZE(%ecx),%esp |
497 |
jmp _return_from_kernel |
jmp _return_from_kernel |
498 |
|
|
501 |
movl 4(%esp), %eax |
movl 4(%esp), %eax |
502 |
movl %esp,%ecx /* get kernel stack */ |
movl %esp,%ecx /* get kernel stack */ |
503 |
or $(KERNEL_STACK_SIZE-1),%ecx |
or $(KERNEL_STACK_SIZE-1),%ecx |
504 |
|
cli |
505 |
movl -3-IKS_SIZE(%ecx),%esp /* switch back to PCB stack */ |
movl -3-IKS_SIZE(%ecx),%esp /* switch back to PCB stack */ |
506 |
movl %eax,R_EAX(%esp) /* save return value */ |
movl %eax,R_EAX(%esp) /* save return value */ |
507 |
jmp _return_from_kernel |
jmp _return_from_kernel |