- Article de discussion technique détaillé sur Retrocomputing Stack Exchange à propos d’un problème où le noyau NT 3.1 provoque un redémarrage sur une machine 486DX4
- L’auteur a installé Windows NT 3.1 sur un système Compaq ProSignia 3080 et a remplacé l’Intel 486DX-33 par un AMD enhanced 486DX4-SV8B pour améliorer les performances
- L’auteur a rencontré un problème en essayant d’entrer dans le débogage du noyau, la machine redémarrant au lieu d’afficher l’invite
kd>
- L’auteur a testé plusieurs causes possibles, notamment la mémoire, la corruption des fichiers système, l’activité d’un watchdog matériel et la communication via un adaptateur USB-vers-série, mais aucune n’était en cause
- L’auteur a découvert que le noyau Windows NT 3.1 n’était pas compatible avec les processeurs 486 améliorés, en particulier ceux qui fournissent l’instruction CPUID
- Le problème de compatibilité a été retracé à un bug dans la fonction KiSaveProcessorControlState, qui enregistre les registres de contrôle du processeur dans une structure CONTEXT étendue
- À cause du bug, une fonction considère l’octet à l’offset 19h du KPRCB comme faisant partie du numéro de modèle, ce qui fait qu’un processeur 80-4-86 capable de CPUID est traité comme un processeur 80-260-86
- L’auteur propose un correctif consistant à remplacer l’instruction
cmp ds:word_FFDFF138, 5 par une comparaison sur un octet, à appliquer deux fois dans NTOSKRNL.EXE
- L’enquête détaillée de l’auteur et le correctif proposé constituent une ressource utile pour d’autres personnes confrontées à des problèmes similaires avec le noyau NT 3.1 sur des processeurs 486 améliorés
1 commentaires
Commentaires sur Hacker News