4.2 /sys/vax/locore.s (early versions); SPL problem

croft%Safe at su-score.ARPA croft%Safe at su-score.ARPA
Tue Apr 24 00:01:00 AEST 1984


From:  Bill Croft <croft%Safe at su-score.ARPA>

The early 4.2 tapes had a bug in /sys/vax/locore.s that would cause
random panics if your system had devices at spl6 (such as a
3COM ethernet board).  The problem was that the 
dztimer/dhtimer routines do spl5's internally and they
were being called from hardclock.  If there was already an spl6
device active when the hardclock came in, it could be reentered
after the spl5 in dztimer.  The fix was simply to move the timer
calls down to softclock.

If you have a later tape from Berkeley, this is already fixed.
(Stanford was in the first dozen tapes mailed).


*** /sys/vax/locore.s_	Thu Sep 29 11:06:58 1983
--- locore.s	Fri Jan 13 06:03:43 1984
***************
*** 1,4
! /*	locore.s	6.4	83/09/29	*/
--- 1,4 -----
! /*	locore.s	6.3	83/08/12	*/
***************
*** 161,172
  	mtpr $ICCS_RUN|ICCS_IE|ICCS_INT|ICCS_ERR,$ICCS
  	pushl 4+6*4(sp); pushl 4+6*4(sp);
  	calls $2,_hardclock			# hardclock(pc,psl)
- #if NDZ > 0
- 	calls	$0,_dztimer
- #endif
- #if NDH > 0
- 	calls	$0,_dhtimer
- #endif
  #if NPS > 0
  	pushl	4+6*4(sp); pushl 4+6*4(sp);
  	calls	$2,_psextsync

--- 161,166 -----
  	mtpr $ICCS_RUN|ICCS_IE|ICCS_INT|ICCS_ERR,$ICCS
  	pushl 4+6*4(sp); pushl 4+6*4(sp);
  	calls $2,_hardclock			# hardclock(pc,psl)
  #if NPS > 0
  	pushl	4+6*4(sp); pushl 4+6*4(sp);
  	calls	$2,_psextsync
***************
*** 176,181
  	rei
  SCBVEC(softclock):
  	PUSHR
  	pushl	4+6*4(sp); pushl 4+6*4(sp);
  	calls	$2,_softclock			# softclock(pc,psl)
  	POPR; 

--- 170,181 -----
  	rei
  SCBVEC(softclock):
  	PUSHR
+ #if NDZ > 0
+ 	calls	$0,_dztimer
+ #endif
+ #if NDH > 0
+ 	calls	$0,_dhtimer
+ #endif
  	pushl	4+6*4(sp); pushl 4+6*4(sp);
  	calls	$2,_softclock			# softclock(pc,psl)
  	POPR; 



More information about the Comp.unix.wizards mailing list