v5.1.0 — Stability and bugfix release
v5.1.0 — Stability and bugfix release
Stability and bugfix release — six critical fixes for crashes and GUI rendering.
Fixes
- TSS struct alignment fix (\kernel/kernel.h): three reserved \uint32_t\ fields (SS0/SS1/SS2 at offsets 28-39) were incorrectly merged into a single \uint64_t, shifting all IST pointers 4 bytes early. Any exception using an IST (double fault, NMI) read a garbage stack pointer → triple fault.
- GDT limit correction (\kernel/gdt.c): limit was (68+16)-1=63\ (too large), corrected to (58+16)-1=55.
- APIC/PIC IRQ masking fix (\kernel/irq.c): when APIC is active, the legacy PIC stays fully masked. Prevents duplicate interrupt delivery.
- switch_to_user_process inline asm fix (\kernel/switch.asm): AT&T operand order was reversed (source/destination swapped in \mov), causing exec'd user processes to crash.
- QEMU display fix (
un.ps1): changed from -display gtk\ to -display sdl\ (gtk is broken on Windows). - VGA 8x16 font data corruption fix (\kernel/font.c): font_data array had marker bytes (the glyph's own index) inserted at position (index % 16), shifting all pixel data. Replaced with correct IBM VGA 8x16 ROM font. GUI text now renders legibly.
- Build: zero errors, zero warnings.