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.