- Detaillierter technischer Diskussionsbeitrag auf Retrocomputing Stack Exchange über ein Problem, bei dem der NT-3.1-Kernel auf einem 486DX4-Rechner einen Neustart auslöst
- Der Autor installierte Windows NT 3.1 auf einem Compaq-ProSignia-3080-System und ersetzte zur Leistungssteigerung den Intel 486DX-33 durch einen AMD enhanced 486DX4-SV8B
- Beim Versuch, in das Kernel-Debugging einzusteigen, trat das Problem auf: Statt einen
kd>-Prompt bereitzustellen, startete der Rechner neu
- Der Autor testete verschiedene mögliche Ursachen wie Arbeitsspeicher, beschädigte Systemdateien, Aktivitäten eines Hardware-Watchdogs und die Kommunikation über einen USB-zu-Seriell-Adapter, doch keine davon war die Ursache
- Der Autor stellte fest, dass der Windows-NT-3.1-Kernel nicht mit erweiterten 486-Prozessoren kompatibel ist, insbesondere mit solchen, die den
CPUID-Befehl bereitstellen
- Das Kompatibilitätsproblem wurde auf einen Bug in der Funktion
KiSaveProcessorControlState zurückgeführt, die Prozessor-Steuerregister in der erweiterten CONTEXT-Struktur speichert
- Durch den Bug behandelt eine Funktion das Byte am Offset 19h von
KPRCB als Teil der Modellnummer, sodass ein CPUID-fähiger 80-4-86-Prozessor als 80-260-86-Prozessor behandelt wird
- Der Autor schlägt eine Korrektur vor, bei der der Befehl
cmp ds:word_FFDFF138, 5 zu einem Byte-Vergleich gepatcht wird; die Änderung muss zweimal in NTOSKRNL.EXE angewendet werden
- Die detaillierte Untersuchung des Autors und die vorgeschlagene Korrektur bieten eine nützliche Ressource für andere, die bei erweiterten 486-Prozessoren auf ähnliche Probleme mit dem NT-3.1-Kernel stoßen
1 Kommentare
Hacker-News-Kommentare