From eed014937a5e6a3d2ff50db8efa0db1bcffe6dcc Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Tue, 11 Feb 2003 23:44:41 +0000 Subject: 2003-02-11 Joel Sherrill * interrupts.t: Rework logic that decides when to call _Thread_Dispatch. Analysis by Sergei Organov determined that _ISR_Signals_to_thread_executing was not being honored and/or cleared properly. --- doc/porting/ChangeLog | 7 +++++++ doc/porting/interrupts.t | 16 +++++++--------- 2 files changed, 14 insertions(+), 9 deletions(-) (limited to 'doc') diff --git a/doc/porting/ChangeLog b/doc/porting/ChangeLog index ded85c8e83..1e4ba2f44d 100644 --- a/doc/porting/ChangeLog +++ b/doc/porting/ChangeLog @@ -1,3 +1,10 @@ +2003-02-11 Joel Sherrill + + * interrupts.t: Rework logic that decides when to call + _Thread_Dispatch. Analysis by Sergei Organov + determined that _ISR_Signals_to_thread_executing was not being + honored and/or cleared properly. + 2003-01-25 Ralf Corsepius * porting.texi: Set @setfilename porting.info. diff --git a/doc/porting/interrupts.t b/doc/porting/interrupts.t index aa660f5a0e..d3930d043d 100644 --- a/doc/porting/interrupts.t +++ b/doc/porting/interrupts.t @@ -365,17 +365,15 @@ if ( _ISR_Nest_level ) restore stack #endif -if ( !_Context_Switch_necessary ) +if ( _Thread_Dispatch_disable_level ) + _ISR_Signals_to_thread_executing = FALSE; goto the label "exit interrupt (simple case)" -if ( !_ISR_Signals_to_thread_executing ) - goto the label "exit interrupt (simple case)" - -_ISR_Signals_to_thread_executing = FALSE; - -call _Thread_Dispatch() or prepare to return to _ISR_Dispatch -prepare to get out of interrupt -return from interrupt (maybe to _ISR_Dispatch) +if ( _Context_Switch_necessary || _ISR_Signals_to_thread_executing ) + _ISR_Signals_to_thread_executing = FALSE; + call _Thread_Dispatch() or prepare to return to _ISR_Dispatch + prepare to get out of interrupt + return from interrupt (maybe to _ISR_Dispatch) LABEL "exit interrupt (simple case): prepare to get out of interrupt -- cgit v1.2.3