On Wed, 21 Nov 2007 17:16:24 +1100 Benjamin Herrenschmidt <[EMAIL PROTECTED]> wrote:
> This removes CONFIG_440A which was a problem for multiplatform > kernels and instead fixes up the IVOR at runtime from a setup_cpu > function. The "A" version of the machine check also tweaks the > regs->trap value to differenciate the 2 versions at the C level. > <snip> > void machine_check_exception(struct pt_regs *regs) > { > @@ -463,8 +489,20 @@ void machine_check_exception(struct pt_r > /* See if any machine dependent calls */ > if (ppc_md.machine_check_exception) > recover = ppc_md.machine_check_exception(regs); > - else > - recover = generic_machine_check_exception(regs); > + else { > +#ifdef CONFIG_4xx > + if (IS_MCHECK_EXC(regs)) > + recover = decode_machine_check_4xxA(regs); > + else > + recover = decode_machine_check_4xx(regs); > +#elif defined (CONFIG_E500) > + recover = decode_machine_check_e500(regs); > +#elif defined (CONFIG_E200) > + recover = decode_machine_check_e200(regs); > +#else > + recover = decode_machine_check_generic(regs); > +#endif Why didn't you just add a ppc_md.machine_check_exception to the effected boards? Then you could have gotten rid of the ifdefs all together. josh _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev