summaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2003-02-11 23:44:41 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2003-02-11 23:44:41 +0000
commiteed014937a5e6a3d2ff50db8efa0db1bcffe6dcc (patch)
treed50d1e22340cb1d26db5a45c941dd04e83771e69 /doc
parent3ab906275610bbfa9efa5df8a0c5167eae646e6d (diff)
downloadrtems-eed014937a5e6a3d2ff50db8efa0db1bcffe6dcc.tar.bz2
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.
Diffstat (limited to 'doc')
-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