This is the mail archive of the ecos-discuss@sourceware.org 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]
Other format: [Raw text]

Possible fix for interrupt latency problems on Arm


I have been looking at why my Arm LPC2220 board occasionally gets terrible interrupt latencies. This happens particularly when the interrupt I'm interested in occurs whilst ecos is doing processing after a TIMER0 (ecos RTC) interrupt.

It seems that interrupt_end() is called from hal/arm/arch/current/src/vectors.s with interrupts disabled, whereas it looks to me like interrupt_end() has been designed to run with interrupts enabled in order for DSRs to be interruptible.

I have modified my own vectors.s by inserting the following immediately before the call to interrupt_end():
// Enable interrupts
mrs r4,cpsr
bic r4,r4,#CPSR_IRQ_DISABLE|CPSR_FIQ_DISABLE
msr cpsr,r4


This seems to work for me, but I would appreciate feedback if this is a sane and wise thing to do.

As a newbie, how do I submit such modifications for inclusion in the repository?

Thanks,
Mike


-- Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss


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