summaryrefslogtreecommitdiffstats
path: root/c/src/exec/posix/include
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1999-01-13 14:13:47 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1999-01-13 14:13:47 +0000
commit16a9ee1d0644c573fd78e690c43dfd4e32748463 (patch)
tree12d36a34aba2ef0fa6069750e694c2f67d1874c5 /c/src/exec/posix/include
parentPatch from Chris Johns <ccj@acm.org> to get around a C++ problem with psim. (diff)
downloadrtems-16a9ee1d0644c573fd78e690c43dfd4e32748463.tar.bz2
Bug report from Jiri Gaisler <jgais@ws.estec.esa.nl>:
> > I think I have found a bug in src/exec/scor/sparc/cpu/erc32.h in: > > > > #define ERC32_Disable_interrupt( _source, _previous ) \ > > do { \ > > unsigned32 _level; \ > > unsigned32 _mask = 1 << (_source); \ > > \ > > sparc_disable_interrupts( _level ); \ > > (_previous) = ERC32_MEC.Interrupt_Mask; \ > > ERC32_MEC.Interrupt_Mask = _previous | _mask; \ > > sparc_enable_interrupts( _level ); \ > > (_previous) &= ~_mask; \ <- IS THIS CORRECT...? > > } while (0) > > > > The previous interrupt mask is returned after first clearing the > > bit to be disabled, regardless whether the bit was set before or > > not. If the bit was set (interrupt masked), subsequent call to > > ERC32_Restore_interrupt() will enable the interrupt even though > > it was supposed to be masked. This is indeed what happens in > > DEBUG_puts when polled console I/O is used. In my opinion, the > > last statement in the macro should be removed - what is your opinion? > > I think the "~" shouldn't be there. I recall that the intent of that line > is to only return the state of the interrupts you were concerned with. > Removing the line returns entire state. Given that the value returned > shuold only be used in conjunction with the map, I suppose either removing > the ~ or the entire line is correct? I can go either way. Just let me > know which you think is more correct and the source will change. :) Hmmm, just removing the '~' should be OK. DEBUG_puts() seems to be the only user of ERC32_Restore_interrupt() anyway ...
Diffstat (limited to 'c/src/exec/posix/include')
0 files changed, 0 insertions, 0 deletions