21 lines
364 B
ArmAsm
21 lines
364 B
ArmAsm
// swtch(void** oldstack, void* newstack)
|
|
.global swtch
|
|
swtch:
|
|
mov 4(%esp), %eax // eax holds "oldstack"
|
|
mov 8(%esp), %ecx
|
|
|
|
push %ebx
|
|
push %ebp
|
|
push %esi
|
|
push %edi
|
|
|
|
mov %esp, (%eax) // save stack ptr to "oldstack"
|
|
mov %ecx, %esp // use "newstack" as stack ptr
|
|
|
|
pop %edi
|
|
pop %esi
|
|
pop %ebp
|
|
pop %ebx
|
|
|
|
ret
|