Pular para o conteúdo
Notícias e tutoriais sobre Linux
Kernel Linux

Fim da emulação no x86 de 32 bits: kernel Linux exige TSC e CX8 nativos e simplifica compilação

Código mais limpo e genérico para os sobreviventes de 32 bits!

linux x86 32 fim emulacao

O desenvolvedor Arnd Bergmann submeteu uma série de patches para o kernel Linux que altera substancialmente a forma como o sistema operacional configura processadores na arquitetura x86 de 32 bits (x86-32). A proposta, enviada para a lista de discussão oficial e rebaseada no kernel 7.4-rc1, remove o código de emulação via software para hardware antigo e alinha a compilação do sistema de 32 bits ao modelo genérico já consolidado no x86-64.

No total, as modificações de Bergmann alteram 37 arquivos e removem 630 linhas de código obsoleto. O foco do trabalho é limpar dependências históricas que perderam a utilidade após o Linux encerrar oficialmente o suporte às gerações 386 e 486 nos últimos anos.

Adeus à emulação via software

A mudança técnica mais sensível da atualização é a exigência incondicional do suporte nativo ao Time Stamp Counter (TSC) e à instrução CMPXCHG8B (identificada como CX8).

Historicamente, o kernel Linux precisava manter rotinas complexas escritas em linguagem Assembly para garantir que processadores muito antigos conseguissem executar certas tarefas. A instrução CMPXCHG8B, por exemplo, é fundamental para realizar operações atômicas de 64 bits em uma arquitetura de 32 bits. Como as CPUs das famílias 386 e 486 originais não possuíam essa capacidade de fábrica, o sistema operacional executava uma emulação via software para evitar falhas de sistema.

Com a arquitetura x86-32 do Linux restrita hoje aos processadores Pentium (i586) e Pentium Pro em diante (i686), a emulação tornou-se um peso morto. O patch apaga definitivamente os arquivos cmpxchg8b_emu.S (com 97 linhas) e atomic64_386_32.S (com 195 linhas). A partir de agora, o kernel assume que qualquer chip de 32 bits capaz de iniciá-lo possui suporte a TSC e CX8 em silício.

Otimização no lugar de restrição de hardware

A segunda etapa da atualização resolve um problema de fragmentação na geração das imagens do sistema. Anteriormente, as opções de configuração específicas por modelo de processador (listadas no código sob o formato CONFIG_M...) criavam dependências estritas. Compilar um kernel x86-32 focando em uma família de chips poderia gerar um binário incompatível com outros modelos.

O patch altera esse comportamento para imitar a arquitetura x86-64. Os kernels x86 de 32 bits passam a ser tratados como genéricos por padrão. As únicas divisões estruturais mantidas são as classes básicas i586 e i686.

A seleção de processadores específicos passa a funcionar exclusivamente como uma otimização do compilador. Bergmann exemplifica na documentação do patch que, se um desenvolvedor compilar o sistema ativando a configuração CONFIG_MATOM, o código resultante receberá instruções otimizadas para a linha Intel Atom, mas continuará funcionando perfeitamente em qualquer outra CPU da classe i686. O mesmo vale para a seleção de opções i586, que resultarão em um sistema operante em todo o ecossistema x86-32 suportado.

Alinhamento de cache e limpeza do AMD Élan

linux x86 32 fim emulacao 1
Fim da emulação no x86 de 32 bits: kernel Linux exige TSC e CX8 nativos e simplifica compilação 3

Para complementar a unificação do código, o kernel passa a exigir um tamanho mínimo de 64 bytes para as linhas de cache (cache lines) na arquitetura x86-32. A medida simplifica o desenvolvimento de drivers e o alinhamento de memória em estruturas do núcleo do sistema.

A série de patches também remove as últimas referências no código ao AMD Élan. Essa família era composta por SoCs voltados ao mercado embarcado na década de 1990. Como esses chips eram baseados na arquitetura 486 (que já teve o suporte geral removido do Linux em 2012), os resquícios isolados dessa linha nos arquivos de configuração do kernel deixaram de fazer sentido.

RECURSOS DO ARTIGO

Links e recursos

Materiais oficiais e referências técnicas relacionadas à matéria.
QUEM ESCREVE
Emanuel Negromonte

Sobre o autor

Emanuel Negromonte é Jornalista, Mestre em Tecnologia da Informação e atualmente cursa a segunda graduação em Engenharia de Software. Com 14 anos de experiência escrevendo sobre GNU/Linux, Software Livre e Código Aberto, dedica-se a descomplicar o universo tecnológico para entusiastas e profissionais. Seu foco é em notícias, tutoriais e análises aprofundadas, promovendo o conhecimento e a liberdade digital no Brasil.