Files
RockOS/kernel/scheduler.S

29 lines
514 B
ArmAsm
Raw Normal View History

.code32
.global yield
.extern schedule_next_task
yield: # void yield()
cli
pushfl
pushl %cs
movl 8(%esp), %eax
pushl %eax
movl 4(%esp), %ebx # Get CS
movl %ebx, 8(%esp) # Move CS over Old EIP
movl 0(%esp), %ebx # Get Return EIP
movl %ebx, 4(%esp) # Move Return EIP over CS
addl $4, %esp # Adjust stack pointer up.
2026-07-01 20:00:22 -05:00
pushal
pushl %esp
call switch_context
movl %eax, %esp
popal
sti
iret