fix: deep audit — VA collision, arch pollution, broken stubs
Critical bug fix:
- VDSO and E1000 both mapped at VA 0xC0230000 — silent corruption!
VDSO moved to 0xC0280000, E1000 moved to 0xC0330000-0xC0371FFF
New centralized VA map (include/kernel_va_map.h):
- All fixed kernel VA allocations documented in one header
- IOAPIC, VDSO, ACPI, ATA DMA, E1000, LAPIC all use KVA_* defines
- Prevents future VA collisions — single source of truth
Architecture pollution fixes:
- syscall.c SET_THREAD_AREA: replaced x86 gdt_set_gate_ext() with
hal_cpu_set_tls() HAL call (was #if __i386__ inline)
- e1000_netif.c: replaced x86 'pause' asm with cpu_relax() from
spinlock.h (arch-agnostic)
- tty.c: removed dead uart_console.h include (switched to
console_put_char in previous commit)
Broken code fix:
- pmm_print_stats(): was declared in pmm.h but never implemented —
now prints Total/Used/Free RAM in KB and MB
- kconsole 'mem' command: replaced [TODO] stub with pmm_print_stats()