- Artigo com uma discussão técnica detalhada no Retrocomputing Stack Exchange sobre um problema em que o kernel do NT 3.1 provoca reinicializações em uma máquina 486DX4
- O autor instalou o Windows NT 3.1 em um sistema Compaq ProSignia 3080 e substituiu o Intel 486DX-33 por um AMD enhanced 486DX4-SV8B para melhorar o desempenho
- O autor encontrou o problema ao tentar entrar na depuração do kernel, fazendo com que a máquina reiniciasse em vez de apresentar o prompt
kd>
- O autor testou várias causas possíveis, incluindo memória, corrupção de arquivos do sistema, atividade de watchdog de hardware e comunicação com adaptador USB-para-serial, mas nenhuma delas era a causa
- O autor descobriu que o kernel do Windows NT 3.1 não é compatível com processadores 486 aprimorados, especialmente os que oferecem a instrução CPUID
- O problema de compatibilidade foi rastreado até um bug na função
KiSaveProcessorControlState, que salva os registradores de controle do processador na estrutura CONTEXT estendida
- Devido a uma função que trata o byte no deslocamento 19h de
KPRCB como parte do número do modelo, um processador 80-4-86 com capacidade de CPUID passa a ser tratado como um processador 80-260-86
- O autor propôs uma correção que altera a instrução
cmp ds:word_FFDFF138, 5 para uma comparação de byte e que precisa ser aplicada duas vezes em NTOSKRNL.EXE
- A investigação detalhada do autor e a correção proposta oferecem um recurso útil para outras pessoas que enfrentarem problemas semelhantes com o kernel do NT 3.1 em processadores 486 aprimorados
1 comentários
Comentários do Hacker News