Files
opencoreC/kernel/asm/timer_isr.S
T
RarDog eed05c1eca feat(boot+shell): add bootable disk image, unified scheduler and interactive user-space shell
- Implement Limine v8 boot protocol requests in dedicated PT_LOAD RW segment
- Configure IOPL=3 and SSE in arch setup for Ring 3 drivers and libc
- Unify scheduler context switching via switch_to and preempt_tick
- Support dual-source keyboard/serial input in sys_key_read
- Add automated 'make image' and 'make run' targets for instant QEMU launch
- Complete interactive UNIX-like shell (osh) with built-in commands & ramdisk
2026-09-02 19:47:57 +03:00

46 lines
875 B
ArmAsm

/* opencoreC - Timer Preemptive Interrupt Trampoline (Vector 32 / 0x20) */
.global timer_isr_entry
.extern timer_interrupt_handler
.section .text
timer_isr_entry:
/* 1. Save all general-purpose registers to form complete interrupt context frame */
push rax
push rbx
push rcx
push rdx
push rsi
push rdi
push rbp
push r8
push r9
push r10
push r11
push r12
push r13
push r14
push r15
/* 2. Call handler in Rust (sends EOI and invokes sched.preempt_tick) */
call timer_interrupt_handler
/* 3. Restore all general-purpose registers */
pop r15
pop r14
pop r13
pop r12
pop r11
pop r10
pop r9
pop r8
pop rbp
pop rdi
pop rsi
pop rdx
pop rcx
pop rbx
pop rax
/* 4. Return from interrupt (IRETQ restores RIP, CS, RFLAGS, RSP, SS) */
iretq