Files
RockOS/kernel/scheduler.S
2026-07-08 19:11:39 -05:00

36 lines
472 B
ArmAsm

.code32
.global yield
.extern schedule_next_task
yield: # void yield()
cli
popl %ecx
pushfl // EFLAGS
pushl %cs // CS
pushl %ecx // EIP
pushal
call send_eoi_master
xor %eax, %eax
mov %ds, %ax
pushl %eax
mov $0x10, %ax
mov %ax, %ds
mov %ax, %es
pushl %esp
call switch_context
movl %eax, %esp
popl %eax
mov %ax, %ds
mov %ax, %es
popal
sti
iret