- Artikel diskusi teknis mendetail di Retrocomputing Stack Exchange tentang masalah kernel NT 3.1 yang menyebabkan reboot pada mesin 486DX4
- Penulis memasang Windows NT 3.1 pada sistem Compaq ProSignia 3080 dan mengganti Intel 486DX-33 dengan AMD enhanced 486DX4-SV8B untuk meningkatkan kinerja
- Penulis mengalami masalah saat mencoba masuk ke kernel debugging, yang menyebabkan mesin reboot alih-alih menampilkan prompt
kd>
- Penulis menguji berbagai kemungkinan masalah seperti memori, kerusakan file sistem, aktivitas watchdog perangkat keras, dan komunikasi adaptor USB-to-serial, tetapi tidak satu pun yang menjadi penyebabnya
- Penulis menemukan bahwa kernel Windows NT 3.1 tidak kompatibel dengan prosesor 486 yang ditingkatkan, khususnya yang menyediakan instruksi CPUID
- Masalah kompatibilitas tersebut ditelusuri ke bug dalam fungsi KiSaveProcessorControlState yang menyimpan register kontrol prosesor ke struktur CONTEXT yang diperluas
- Bug tersebut menyebabkan prosesor 80-4-86 yang mampu menjalankan CPUID diperlakukan sebagai prosesor 80-260-86 karena fungsi itu menganggap byte pada offset 19h di KPRCB sebagai bagian dari nomor model
- Penulis mengusulkan perbaikan dengan mem-patch perintah
cmp ds:word_FFDFF138, 5 menjadi perbandingan byte, dan perbaikan ini harus diterapkan dua kali di NTOSKRNL.EXE
- Investigasi rinci penulis dan perbaikan yang diusulkan menyediakan referensi yang berguna bagi orang lain yang mengalami masalah serupa terkait kernel NT 3.1 pada prosesor 486 yang ditingkatkan
1 komentar
Komentar Hacker News