Skip to content

v5.1.0 — Stability and bugfix release

Choose a tag to compare

@kazah-png kazah-png released this 29 Jun 01:24
· 1047 commits to master since this 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.