On Mon, 25 Feb 2019, Falk Richter wrote: > >Synopsis: <OpenBSD 6.4 doesn't boot on 486 class processor anymore> ... > >Description: > <Just after booting the kernel the system stops with: > trap: 0(0) invalid opcode fault > cn_tab=0x5412c > eax 0 ecx 0 edx ff58 ebx ffc8 > esp fe0c ebp ff40 esi 8 edi ff58 > eip 4241c eflags 10046 cs 8 ss 10 > ds 10 es 10 fs 10 gs 10 > > I tested it with AMD / Cyrix 486DX2-66, AMD 486DX4-100 and Cyrix > 5x86-100GP processors on different mainboards with chipsets of UMC, SiS > and Winbond. I found one exception which works yet (see dmesg): AMD 5x86 > P75 (marketing name) which was a AMD 486DX4-133 with write-back cache.
The problem is that ucode_load() in sys/arch/i386/stand/libsa/exec_i386.c uses CPUID() without checking whether the cpuid instruction is supported. There are currently three places in sys/arch/i386/stand/libsa which make that check: cpuprobe.c, machdep.c, and random_i386.S. ucode_load() could copy the chunk from machdep.c...or someone could add a global and do the check once, early... Philip Guenther