My target platform is with 750FX and MPC107, 256M ram, a NS16c552 serial and also a Intel 82559 compatiable ethernet controller.
 
I can get Program Exeption(0x700) printing msg when I "go" a program from an arbitary address within U-Boot's shell.
But when I set EE bit in MSR register, U-Boot seems to hang there, nothing
output.
 
I guess the exception handling have problem. But I really didn't change any codes in Start.s or ppc_asm.tmpl.
 
Additonal, when I write a dword to a address outside my BAT-Array covered range, DSI Exception(0x300) also seems hanging, nothing output. I originally image that the UnknownException() funciton can print something on my console.
 
In any case Program Exception handling does work. And it seems when I set IP bit in MSR register, the higher Exception handler which is borned in flash can go up to the address { hdlr - _start + EXC_OFF_SYS_RESET; (refer to ppc_asm.tmpl Line 304) }. There is a number such as 0x3688. Maybe CPU turned to that address to fetch next instruction. Unfortunately, that address is dull, so program exception occured. And then I got something on the console just like that after I "go 0x3688".
 
From above, I can image STD_EXCEPTION(...) works well, even transfer_to_handler has no problem, but next to that, UnknownException() or timer_interrupt() or external_interrupt() don't work -- at least they can't output the strings to console.
 
At last I check the data in exactly the exception handler offset, like "md 0x700;  md 0x900; md 0x500;".  I can find the last two addresses embedded.
One is like UnknownException() or timer_interrupt() or external_interrupt(). The other is like int_return.   Simply "go" the first address, I retained normal result -- UnknownException() or timer_interrupt() or external_interrupt() print their origin msg on the console. But why they can't work in the exception handling -- even they won't really run in the exception handling, :)
 
Thanks to your patiently reading out the above long text.
Any help or advice is appreciated.
Thank you.