Witam
Próbuję zrobić bootloader i zatrzymałem się na następującym problemie.
Chcę przełączyć do trybu IA-32e (czyli 64-bitowego) z trybu chronionego (czyli 32-bitowego), lecz przy włączaniu stronicowania pojawia się wyjątek (page fault). Wcześniej przełączyłem do trybu chronionego, więc 3-poziomowe stronicowanie działa. Teraz ustawiam 4-poziomowe stronicowanie i pojawia się wyjątek.
Robię wszystko zgodnie z dokumentacją ‟In­tel® 64 and IA-32 Ar­chi­te­c­tu­res So­f­twa­re De­velo­per's Ma­nu­al”, szczególnie w sekcji 9.8.5 ‟Initializing IA-32e Mode”.
Czy ktoś mógłby pomóc?
Tutaj jest kod, który sprawia problem: https://github.com/overcq/boot/blob/main/fileloader.S#L91

Problem rozwiązany: brak było wyrównania do strony pamięci, dla każdej tabeli.