wilbur.chan wrote:
2009/10/22 Kevin D. Kissell <kevink@xxxxxxxxxxxxx>:
wilbur.chan wrote:
Kernal didn't resgister IRQ 23 when booting. Hmm....the only '23'
number I can find in kernel is in traps.c.
Why a 23 IRQ was triggered?
The usual reason would be a failure to correctly initialize an interrupt
controller, or the Status.IM mask field. The kernel complains precisely
*because* IRQ 23 wasn't registered, but an interrupt was nevertheless
delivered that was decoded as being that IRQ.
Regards,
Kevin K.
Thanks for your suggestion.
And I found that , as a matter of fact , kernel has registered No.23 as a trap.
In trap_init :
/*
1419 * Only some CPUs have the watch exceptions.
1420 */
1421 if (cpu_has_watch)
1422 set_except_vector(23, handle_watch);
So, if a No.23 "signal" happened , kernel should invoke handle_watch instead.
But why here kernel complained ? and why kernel entered the IRQ branch
(do_IRQ) rather than trap branch?
You still don't understand. You are not getting the watch exception.
The '23' you see is not at all related to the exception code in the
C0_cause register.
David Daney