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?