CVSROOT: /cvs Module name: src Changes by: m...@cvs.openbsd.org 2014/02/08 15:20:15
Modified files: sys/arch/sgi/sgi: ip32_machdep.c Log message: For some reason (lack of testing being my #1 candidate), IP32 PROM version 4.18 ends up with the CKSEG1 function pointer values being wrong. All of them. Wrong, as in, off-by-0x60. Of course, invoking the advertized function pointers leads to interesting results, from bogus panics to invalid pointer dereferences. Attempt to identify this revision by: - checking that all five function pointer values, as set up by bios_ident(), match the 4.18 bogus values; - instructions at said pointer match the 4.18 values. If the test is positive, then the pointer values are replaced with the correct values. This allows O2 systems with 4.18 PROM to correctly powerdown, reboot and halt. Found the hard way by matthieu@ after a PROM upgrade, verified on a second system by me.