* 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:
Sebastian Huber
2010-11-09 09:14:10 +00:00
parent 2e5a8933c1
commit 42d6ed845a
2 changed files with 8 additions and 24 deletions

View File

@@ -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.

View File

@@ -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 ) {