banan-os/kernel/arch/x86_64/Yield.S

30 lines
383 B
ArmAsm

.global asm_yield_trampoline
asm_yield_trampoline:
movq %rsp, %rcx
movq %rdi, %rsp
subq $8, %rsp
pushq (%rcx)
pushq %rcx
pushq %rax
pushq %rbx
pushq %rbp
pushq %r12
pushq %r13
pushq %r14
pushq %r15
movq %rsp, %rdi
call scheduler_on_yield
popq %r15
popq %r14
popq %r13
popq %r12
popq %rbp
popq %rbx
popq %rax
movq 8(%rsp), %rcx
movq 0(%rsp), %rsp
jmp *%rcx