1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-21 10:13:35 +00:00

Fix high core purification.

The PURIMP routine splits the page map into three parts: writable data
at the bottom, a large gap in the middle (which the GC will manage
later), and read-only code/data at the top. There's one CORBLK call for
each of these.

The final call, which gave pages BOT/2000 to 400 as the range, failed
with %EROPG when it hit the first unmapped page after the end of the
pure data. Experimentation shows that, at least with current ITS, this
is how CORBLK normally behaves.

Fix by calculating the final page from RHITOP rather than assuming 400.
This commit is contained in:
Adam Sampson 2018-04-25 19:41:02 +01:00 committed by Adam Sampson
parent 20faeb8d24
commit 3122c71eb2

View File

@ -462,10 +462,16 @@ PURIMP: MOVE A,FRETOP
HRL B,A
DOTCAL CORBLK,[[1000,,0],[1000,,-1],B]
FATAL INITM -- CAN'T FLUSH MIDDLE CORE
;Disabled because this fails with ITS 1648.
; MOVE A,[-<400-PHIBOT>,,PHIBOT]
; DOTCAL CORBLK,[[1000,,210000],[1000,,-1],A]
; FATAL INITM -- CAN'T PURIFY HIGH CORE
MOVE B,RHITOP
SUBI B,1
ASH B,-10.
MOVEI A,PHIBOT
SUB A,B
SUBI A,1
HRLS A
HRRI A,PHIBOT
DOTCAL CORBLK,[[1000,,210000],[1000,,-1],A]
FATAL INITM -- CAN'T PURIFY HIGH CORE
]
IFE ITS,[