This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: sa11x0 spurious interrupts



Jonathan Larmour <jlarmour@redhat.com> writes:

> Robin Farine wrote:
> > 
> > Hello,
> > 
> > While looking at the way the sa11x0 hal's routine 'hal_IRQ_handler()' decodes
> > interrupt sources, I noticed that when it does not find an interrupt source,
> > the routine returns CYGNUM_HAL_INTERRUPT_NONE, which equals to -1 for this
> > platform. However, the common ARM code in "vectors.S" assumes that a spurious
> > interrupt always have the vector #0. And worse, 'handle_IRQ_or_FIQ' will call
> > 'hal_interrupt_handlers[-1]' which contains 0 and thus reboot!
> > 
> > Did I miss something?

> ...
> I don't think so. 0 can be a valid ISR. What's worse is that the default
> ISR in hal/common also returns 0 to indicate a spurious interrupt.
> 
> Anyone got any opinions why this isn't simply all wrong?

I think that the sa11x0 'hal_IRQ_handler()' routine does the right thing
(returning -1) and that "vector.S" should in any case check that the vector
returned is in range and if not, call the spurious interrupt handler if the
configuration requested it.

Robin


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]