Initial Upload
This commit is contained in:
29
swtch.S
Normal file
29
swtch.S
Normal file
@ -0,0 +1,29 @@
|
||||
# Context switch
|
||||
#
|
||||
# void swtch(struct context **old, struct context *new);
|
||||
#
|
||||
# Save the current registers on the stack, creating
|
||||
# a struct context, and save its address in *old.
|
||||
# Switch stacks to new and pop previously-saved registers.
|
||||
|
||||
.globl swtch
|
||||
swtch:
|
||||
movl 4(%esp), %eax
|
||||
movl 8(%esp), %edx
|
||||
|
||||
# Save old callee-saved registers
|
||||
pushl %ebp
|
||||
pushl %ebx
|
||||
pushl %esi
|
||||
pushl %edi
|
||||
|
||||
# Switch stacks
|
||||
movl %esp, (%eax)
|
||||
movl %edx, %esp
|
||||
|
||||
# Load new callee-saved registers
|
||||
popl %edi
|
||||
popl %esi
|
||||
popl %ebx
|
||||
popl %ebp
|
||||
ret
|
Reference in New Issue
Block a user