forked from Imagelibrary/rtems
2010-11-09 Sebastian Huber <sebastian.huber@embedded-brains.de>
* score/src/watchdoginsert.c: Removed superfluous cast and use appropriate API function. This special case handling is obsolete since 2006 with the introduction of compiler memory barriers in the interrupt routines. Removed obsolete comments.
This commit is contained in:
@@ -1,3 +1,10 @@
|
||||
2010-11-09 Sebastian Huber <sebastian.huber@embedded-brains.de>
|
||||
|
||||
* score/src/watchdoginsert.c: Removed superfluous cast and use
|
||||
appropriate API function. This special case handling is obsolete
|
||||
since 2006 with the introduction of compiler memory barriers in the
|
||||
interrupt routines. Removed obsolete comments.
|
||||
|
||||
2010-11-04 Joel Sherrill <joel.sherrill@oarcorp.com>
|
||||
|
||||
* libmisc/stackchk/check.c: Make compile again.
|
||||
|
||||
@@ -59,21 +59,7 @@ void _Watchdog_Insert(
|
||||
restart:
|
||||
delta_interval = the_watchdog->initial;
|
||||
|
||||
/*
|
||||
* We CANT use _Watchdog_First() here, because a TICK interrupt
|
||||
* could modify the chain during the _ISR_Flash() below. Hence,
|
||||
* the header is pointing to volatile data. The _Watchdog_First()
|
||||
* INLINE routine (but not the macro - note the subtle difference)
|
||||
* casts away the 'volatile'...
|
||||
*
|
||||
* Also, this is only necessary because we call no other routine
|
||||
* from this piece of code, hence the compiler thinks it's safe to
|
||||
* cache *header!!
|
||||
*
|
||||
* Till Straumann, 7/2003 (gcc-3.2.2 -O4 on powerpc)
|
||||
*
|
||||
*/
|
||||
for ( after = (Watchdog_Control *) ((volatile Chain_Control *)header)->first ;
|
||||
for ( after = _Watchdog_First( header ) ;
|
||||
;
|
||||
after = _Watchdog_Next( after ) ) {
|
||||
|
||||
@@ -87,15 +73,6 @@ restart:
|
||||
|
||||
delta_interval -= after->delta_interval;
|
||||
|
||||
/*
|
||||
* If you experience problems comment out the _ISR_Flash line.
|
||||
* 3.2.0 was the first release with this critical section redesigned.
|
||||
* Under certain circumstances, the PREVIOUS critical section algorithm
|
||||
* used around this flash point allowed interrupts to execute
|
||||
* which violated the design assumptions. The critical section
|
||||
* mechanism used here WAS redesigned to address this.
|
||||
*/
|
||||
|
||||
_ISR_Flash( level );
|
||||
|
||||
if ( the_watchdog->state != WATCHDOG_BEING_INSERTED ) {
|
||||
|
||||
Reference in New Issue
Block a user