- Artículo de discusión técnica detallada en Retrocomputing Stack Exchange sobre un problema del kernel de NT 3.1 que provoca reinicios en una máquina 486DX4
- El autor instaló Windows NT 3.1 en un sistema Compaq ProSignia 3080 y reemplazó el Intel 486DX-33 por un AMD enhanced 486DX4-SV8B para mejorar el rendimiento
- El autor tuvo problemas al intentar entrar en la depuración del kernel, lo que hacía que la máquina se reiniciara en lugar de mostrar el prompt
kd>
- El autor probó varias causas posibles, como memoria, corrupción de archivos del sistema, actividad de watchdog de hardware y comunicación mediante adaptadores USB a serial, pero ninguna de ellas resultó ser la causa
- El autor descubrió que el kernel de Windows NT 3.1 no es compatible con procesadores 486 mejorados, en particular con los que ofrecen la instrucción CPUID
- Se rastreó el problema de compatibilidad hasta un bug en la función KiSaveProcessorControlState, que guarda los registros de control del procesador en una estructura CONTEXT extendida
- Debido al bug, una función trata el byte en el desplazamiento 19h de KPRCB como parte del número de modelo, haciendo que un procesador 80-4-86 con capacidad CPUID sea tratado como un procesador 80-260-86
- El autor propuso una corrección que cambia la instrucción
cmp ds:word_FFDFF138, 5 por una comparación de bytes, y que debe aplicarse dos veces en NTOSKRNL.EXE
- La investigación detallada del autor y la corrección propuesta ofrecen un recurso útil para otras personas que enfrenten problemas similares relacionados con el kernel de NT 3.1 en procesadores 486 mejorados
1 comentarios
Comentarios de Hacker News