I am trying to implement a Machine Check exception handler, and am having mixed results. For reference, I started with the IVOR1 handler from Example MPC5744P 1b+2b_FLASH_ECC_error_by_UTEST_area_read GHS614. (I started with that example, found it does as advertised, and based my handler on its IVOR1 handler.) All went well in my test app; an intentional divide-by-zero caused the handler to be invoked. However, when I added it to our app, the divide-by-zero no longer causes it to be invoked.
I then removed (through conditional compilation) most of our app until the handler gets invoked, and sure enough, it works, so I know that all the wiring is correct (e.g. vector table, linking in the handler, etc.). I then started adding app code back in until it stopped working, and narrowed it down to one particular module; if I remove that module, the machine check gets handled, while if I include the module, no machine check. The problem is, of course, the module has nothing to do with exceptions, interrupts, or the like!
Unfortunately, the module in question is not easy to debug for this sort of issue, as it is rather distributed (it is app state machine, in C, modeled after the GoF State pattern; I am not familiar with this area of our app, either). So while I am not at a dead end, the path forward is unclear enough that I am looking at it a different way - specifically, the topic of this question - what can disable Machine Check exceptions? How can I tell if they are enabled or disabled?