[En-Nut-Discussion] Not fixed!!!: Re: confirmed!!! Re: NutOS 4.4.0 on ARM7: possibly bug in NutEnterCritical / NutExitCritical
Harald Kipp
harald.kipp at egnite.de
Fri Feb 22 11:55:55 CET 2008
Hi,
> Yes. As I understand the current implementation of NutEnterCritical /
> NutExitCritical the original value of the CPSR is saved on the stack to
> allow a later restore. This _must_ fail if the stack will be modified in
> the meanwhile.
I agree here as well and this is probably the cause of some strange
behaviour happening when the code is compiled without optimization.
> Other operatin systems implement it the way you propose (e.g. Linux:
> spinlock_irq_save()) and save the flags in a variable you need to
> provide.
This is what I wanted to avoid, but haven't found any alternate solution
so far.
Some time ago a contributor suggested a different solution, which is
still in arch/h8300/include/atom.h. It adds an opening curly brace to
NutEnterCritical and a closing one to NutExitCritical. The intention
was to avoid difficult to find problems due to any missing
NutExitCritical(). Btw. that's also the reason for NutJumpOutCritical().
May be we can use this to add a local variable to NutEnterCritical. This
may break some existing code, but avoids re-writing all the critical
sections.
Harald
More information about the En-Nut-Discussion
mailing list