2009/10/22 Kevin D. Kissell <kevink@paralogos.com>:
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?