forked from Imagelibrary/rtems
2003-02-11 Joel Sherrill <joel@OARcorp.com>
* score/cpu_asm.c: Rework logic that decides when to call _Thread_Dispatch. Analysis by Sergei Organov <osv@javad.ru> determined that _ISR_Signals_to_thread_executing was not being honored and/or cleared properly.
This commit is contained in:
@@ -1,3 +1,10 @@
|
||||
2003-02-11 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* score/cpu_asm.c: Rework logic that decides when to call
|
||||
_Thread_Dispatch. Analysis by Sergei Organov <osv@javad.ru>
|
||||
determined that _ISR_Signals_to_thread_executing was not being
|
||||
honored and/or cleared properly.
|
||||
|
||||
2003-02-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* configure.ac: AM_INIT_AUTOMAKE([1.7.2]).
|
||||
|
||||
@@ -287,6 +287,8 @@ void __ISR_Handler( unsigned32 vector)
|
||||
|
||||
_CPU_ISR_Disable( level );
|
||||
|
||||
_Thread_Dispatch_disable_level--;
|
||||
|
||||
_ISR_Nest_level--;
|
||||
|
||||
#if( CPU_HAS_SOFTWARE_INTERRUPT_STACK == TRUE)
|
||||
@@ -296,16 +298,18 @@ void __ISR_Handler( unsigned32 vector)
|
||||
stack_ptr = _old_stack_ptr;
|
||||
#endif
|
||||
|
||||
_Thread_Dispatch_disable_level--;
|
||||
|
||||
_CPU_ISR_Enable( level );
|
||||
|
||||
if ( _Thread_Dispatch_disable_level == 0 )
|
||||
{
|
||||
if(( _Context_Switch_necessary) || (! _ISR_Signals_to_thread_executing))
|
||||
{
|
||||
_ISR_Signals_to_thread_executing = FALSE;
|
||||
_Thread_Dispatch();
|
||||
}
|
||||
if ( _ISR_Nest_level )
|
||||
return;
|
||||
|
||||
if ( _Thread_Dispatch_disable_level ) {
|
||||
_ISR_Signals_to_thread_executing = FALSE;
|
||||
return;
|
||||
}
|
||||
|
||||
if ( _Context_Switch_necessary || _ISR_Signals_to_thread_executing ) {
|
||||
_ISR_Signals_to_thread_executing = FALSE;
|
||||
_Thread_Dispatch();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user