OK petervlna
I confirm, everything works with simple example... BUT...
Let me share my findings...
1. I've noticed that (according to your Lauterbach scripts) you are using CUT1 device. Your supplied scripts are not working on CUT2 devices because of changes in watchdog... This really doesn't matter for this subject...
2. Even if simple examples work, more complex code doesn't. In my case I'm really facing very strange behavior from both CU1 & CUT2 devices (checked also on the evaluation board and with the newest available GHS compiler as I wrote above).
Because it was hard to explain and you most probably will not have time to look code in details I've made few screenshots and mode changes trace to illustrate the problem...
Finally, mode change tracelog looks like this:

where:
- actual is current MCU run mode;
- new is the mode to which we should switch;
- pctl is PCTL register number if its value was changed before mode requesting mode switch;
- pctl_val is the new value of PCTL above;
There is special case, where PCTL is not changed. This is shown by pctl = 0xFF, pctl_val = 0xFF
So, after 18 mode switches, on 19 my system refuses to switch its mode.
All images that follow are big enough to see the details...
This is system state before start (only run to main, which includes some system initialization calls):

This is system state after CAN initialization (normal system run):

Then, I'm stopping the system and CAN0-3 are already stopped here:

And this is system state one step before death (endless loop):

Mode switch is implemented as follows:


I hope now its more clear... You can see that I'm using three RUN_PC modes:
| #define MPC57XX_DEFAULT_CLOCK_STOP | 0 |
| #define MPC57XX_DEFAULT_RUN_MODE | 1 |
| #define MPC57XX_DEFAULT_LP_MODE | 7 |
When I execute described sequence on my system after setting of PCTL 74 I'm staying in the endless loop, checking S_MTRANS, which always stays 1, which is also seen in the last of big pictures above. System reports through CDP_PRPH_64_95 that "Clock disabling is pending for at least one peripheral" in this group (74). And this stays forever, because my watchdog is OFF for now, but watchdog reset is not real solution for me. If I remove call to clock stop of CAN4, rest of the CAN clocks are stopped fine. Problem is only with CAN4...
Sorry for the long post, but I didn't really figure out how to make it shorter...