Google
 

Trailing-Edge - PDP-10 Archives - bb-jr93e-bb - 7,6/ap015/cpnser.c15
There are 2 other files named cpnser.c15 in the archive. Click here to see a list.
 REP 1/1	;15C1
	TITLE	CPNSER - SECOND PROCESSOR CONTROL V440
	SUBTTL	M. CHURCH - LNS/MIT     P. HURLEY - DEC/JMF/TW/CDO/GMU/TARL 20 MAY 86
 WIT
	TITLE	CPNSER - SECOND PROCESSOR CONTROL V442
	SUBTTL	M. CHURCH - LNS/MIT     P. HURLEY - DEC/JMF/TW/CDO/GMU/TARL 30 JULY 86
 REP 17/1	;15C2
	XP VCP1SR,440	;VERSION NUMBER FOR LOADER STORAGE MAP
 WIT
	XP VCP1SR,442	;VERSION NUMBER FOR LOADER STORAGE MAP
 REP 29/19	;15C3
	IFN FTKL10,<
		APRID	INOSCD##
	>
 WIT
		APRID	INOSCD##
 REP 54/19	;15C4
	IFN FTKL10,<
		APRID	T1
	>
 WIT
		APRID	T1
 INS 1/20	;15C5
	;ROUTINE TO OBTAIN THE DIE INTERLOCK

	LOKDIE::AOSE	.CPDIE##	;OWN INTERLOCK?
		POPJ	P,		;JUST NESTING, RETURN
		SKIPGE	INTDIE##	;INTERLOCK AVAILABLE?
		AOSE	INTDIE##	;TRY TO GET IT
		JRST	.-2		;NOT AVAILABLE
		APRID	INODIE##	;REMEMBER WHO OWNS IT
		SETOM	DIEFLG##	;FLAG A STOPCODE IS HAPPENING
		POPJ	P,		;RETURN

	;ROUTINE TO RELEASE THE DIE INTERLOCK

	ULKDIE::PUSH	P,T1		;SAVE AN AC
		SOSL	T1,.CPDIE##	;COUNT DOWN A LEVEL OF NESTING
		JRST	TPOPJ##		;STILL NESTING, RETURN
		SETOM	INODIE##	;NO ONE OWNS IT NOW
		SETZM	DIEFLG##	;CLEAR STOPCODE IN PROGRESS FLAG
		EXCH	T1,INTDIE##	;RELEASE INTERLOCK
		JUMPGE	T1,TPOPJ##	;OK IF WAS LOCKED PREVIOUSLY
		STOPCD	TPOPJ##,DEBUG,DAU, ;++DIE ALREADY UNLOCKED

	;ROUTINE TO BREAK THE DIE INTERLOCK

	BRKDIE::SETOM	INODIE##	;NO ONE OWNS IT NOW
		SETZM	DIEFLG##	;CLEAR STOPCODE IN PROGRESS FLAG
		SETOM	INTDIE##	;RELEASE INTERLOCK
		POPJ	P,		;RETURN
 REP 27/20	;15C6
		APRID	INTLMO##	;NOTE THAT THIS CPU IS THE OWNER
	>
 WIT
	>
		APRID	INTLMO##	;NOTE THAT THIS CPU IS THE OWNER
 REP 4/21	;15C7
	IFN FTKL10,<
		ANDI	J,7777		;ISOLATE THE SERIAL NUMBER
	>
 WIT
		ANDI	J,ID.PSN	;ISOLATE THE SERIAL NUMBER
 REP 13/24	;15C8
	IFN FTKL10,<
		APRID	INTOLK##	;SERIAL NUMBER OF OWNING CPU
	>
 WIT
		APRID	INTOLK##	;SERIAL NUMBER OF OWNING CPU
 REP 19/25	;15C9
	IFN FTKL10,<
		SUBI	T1,INTL0##	;OFFSET INTO INTERLOCKS
		APRID	INTO0##(T1)	;REMEMBER WHICH CPU OWNS THE INTERLOCK
	>
 WIT
		SUBI	T1,INTL0##	;OFFSET INTO INTERLOCKS
		APRID	INTO0##(T1)	;REMEMBER WHICH CPU OWNS THE INTERLOCK
 REP 10/26	;15C10
	IFN FTKL10,<
		APRID	INTOBT##	;SERIAL NUMBER OF OWNING CPU
	>
 WIT
		APRID	INTOBT##	;SERIAL NUMBER OF OWNING CPU
 REP 7/28	;15C11
	IFN FTKL10,<APRID INOSCN##>
 WIT
		APRID	INOSCN##
 REP 22/28	;15C12
	IFN FTKL10,<APRID INONET##>
 WIT
		APRID	INONET##
 REP 39/28	;15C13
	IFN FTKL10,<APRID INOETH##>	;RECORD INTERLOCK OWNER
 WIT
		APRID	INOETH##	;RECORD INTERLOCK OWNER
 DEL 5/35	;15C14


 DEL 27/45	;15C15
	IFN FTENET,<
		PUSHJ	P,KNISVP##	;DISABLE KLNI FOR DURATION OF STOPCODE
	>; END IFN FTENET
 REP 38/45	;15C16
		DIENLK			;TOO LONK, BREAK INTERLOCK
 WIT
		PUSHJ	P,BRKDIE	;TOO LONG, BREAK INTERLOCK
 REP 11/50	;15C17
	BECOM1:	MOVSI	T1,(1B0)	;GET BIT FOR BREAKPOINT ON CPU0
 WIT
	BECOM1::MOVSI	T1,(1B0)	;GET BIT FOR BREAKPOINT ON CPU0
 REP 21/52	;15C18
	IFN FTKL10,<
		ANDI	T2,7777		;ISOLATE SERIAL NUMBER
	>
		CAMN	T2,.CPASN##-.CPCDB##(T1) ;THIS CPU OWN THE DIE INTERLOCK?
		SETOM	INTDIE##	;YES, BREAK IT
 WIT
		ANDI	T2,ID.PSN	;ISOLATE SERIAL NUMBER
		CAMN	T2,.CPASN##-.CPCDB##(T1) ;THIS CPU OWN THE DIE INTERLOCK?
		PUSHJ	P,BRKDIE	;YES, BREAK IT
 REP 5/53	;15C19
	BRKSIW::PUSHJ	P,SAVT##	;SAVE T1-T4
 WIT
	BRKSIW:	PUSHJ	P,SAVT##	;SAVE T1-T4
 REP 11/53	;15C20
	IFN FTKL10,<
		ANDI	T4,7777		;ISOLATE SERIAL NUMBER
	>
 WIT
		ANDI	T4,ID.PSN	;ISOLATE SERIAL NUMBER
 REP 21/53	;15C21
	IFN FTKL10,<
		ANDI	T4,7777		;ISOLATE SERIAL NUMBER
	>
 WIT
		ANDI	T4,ID.PSN	;ISOLATE SERIAL NUMBER
 SUM 30996