os/arch/i686/interrupts/irq0.s
2024-11-27 21:57:18 +01:00

69 lines
626 B
ArmAsm

.global irq0
.extern _switch_task
.global jump_kernel
.global jump_user
.extern ss
.extern esp
.extern eflags
.extern cs
.extern eip
irq0:
pusha
mov $0x10, %eax
mov %ax, %ds
mov %ax, %es
mov %ax, %fs
mov %ax, %gs
call _switch_task
iret
jump_kernel:
mov $0x20, %eax
outb %al, $0x20
mov (ss), %eax
mov %ax, %ds
mov %ax, %es
mov %ax, %fs
mov %ax, %gs
popa
mov (esp), %esp
push (ss)
push (esp)
push (eflags)
push (cs)
push (eip)
iret
jump_user:
mov $0x20, %eax
outb %al, $0x20
mov (ss), %eax
mov %ax, %ds
mov %ax, %es
mov %ax, %fs
mov %ax, %gs
popa
push (ss)
push (esp)
push (eflags)
push (cs)
push (eip)
iret