mirror of
https://github.com/Leonmmcoset/cleonos.git
synced 2026-04-21 18:44:01 +00:00
34 lines
1.3 KiB
Markdown
34 lines
1.3 KiB
Markdown
|
|
# CLeonOS Stage3
|
||
|
|
|
||
|
|
## Stage Goal
|
||
|
|
- Add interrupt and exception foundation for x86_64 CLKS.
|
||
|
|
- Build and load IDT with exception vectors (0-31) and PIC IRQ vectors (32-47).
|
||
|
|
- Remap PIC and enable timer IRQ.
|
||
|
|
- Provide unified ISR stub + C dispatcher.
|
||
|
|
|
||
|
|
## Acceptance Criteria
|
||
|
|
- Kernel boots and prints `INT IDT + PIC INITIALIZED`.
|
||
|
|
- CPU exceptions are captured and logged with vector/error/RIP.
|
||
|
|
- Timer IRQ increments internal tick counter without panic.
|
||
|
|
- Kernel reaches idle loop with interrupts enabled.
|
||
|
|
|
||
|
|
## Build Targets
|
||
|
|
- `make setup`
|
||
|
|
- `make iso`
|
||
|
|
- `make run`
|
||
|
|
- `make debug`
|
||
|
|
|
||
|
|
## QEMU Command
|
||
|
|
- `qemu-system-x86_64 -M q35 -m 1024M -cdrom build/CLeonOS-x86_64.iso -serial stdio`
|
||
|
|
|
||
|
|
## Common Bugs and Debugging
|
||
|
|
- Triple fault right after enabling interrupts:
|
||
|
|
- Check IDT entry selector/type and verify `lidt` loaded valid base/limit.
|
||
|
|
- Exception panic with wrong vector/error layout:
|
||
|
|
- Verify assembly stub push order matches `struct clks_interrupt_frame`.
|
||
|
|
- IRQ storm or hang:
|
||
|
|
- Ensure PIC EOI is sent for IRQ vectors and IRQ masks are correct.
|
||
|
|
- Link failure for ISR symbols:
|
||
|
|
- Confirm `interrupt_stubs.S` is included in Makefile and assembled to object file.
|
||
|
|
- Limine ELF panic on segment permissions:
|
||
|
|
- Keep linker sections page-aligned to avoid mixed permission pages.
|