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: RM7000 interrupt handling


Hugo Tyson <hmt@redhat.com> writes:

[...]

> > 
> > 1. the startup code presets the per-source interrupt bits and they never change
> >    after that; code should use the devices internal interrupt controllers to
> >    enable/disable interrupt sources.
> > 
> > 2. the interrupt VSR and ISRs use the master interrupt bit only => no nested
> >    interrupts
> > 
> > 3. the rest of the code can safely disable and restore interrupts using the
> >    master interrupt bit only;
> 
> You remember well, I think.
> 
> Yes, those conditions would fix the situation - I think that (1.) and (3.)
> alone (ie. VSRs and ISRs don't diddle the interrupt bit at all) would be
> OK, ISRs must use only the method in (1.)

Yes right, the ISRs don't but the VSR has to reenable interrupts for the DSRs,
no?

>  
> > What do you think, too much restrictive for eCos?
> 
> Sadly I do think that; we want HAL_MASK_INTERRUPTS() et al to work!  Having
> them be a NOP for the low range of interrupt numbers would be, um, awkward?

Wouldn't it be suffiscient if they only use the master bit? Why would the
common, device independent code touch the other bits whose meaning is platform
dependent anyway (the software interrupts excepted)?

> We don't want the HAL to have to know about the Ethernet hardware details, for
> example, if you're not including the ethernet package; but it would need to
> know about the ether control regs to mask its interrupt outside of the status
> register.

Yeah, but the device's ISR knows about the device and thus can disable the
device interrupts, and the associated DSR reenables them.

> 
> I'll continue having a think about this and see what we come up with.
> 
> 	- Huge


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