summaryrefslogtreecommitdiffstats
path: root/doc/porting
diff options
context:
space:
mode:
Diffstat (limited to 'doc/porting')
-rw-r--r--doc/porting/ChangeLog7
-rw-r--r--doc/porting/interrupts.t16
2 files changed, 14 insertions, 9 deletions
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 <joel@OARcorp.com>
+
+ * interrupts.t: 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-01-25 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* 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