MapEntry:
TYPE =
RECORD [
flags: Flags,
vMSpace: VMSpace,
virtualAddressByte: CARD32,
realAddressByte: CARD32
];
Flags:
TYPE =
RECORD [
dirty: BOOLEAN ← FALSE,
referenced: BOOLEAN ← FALSE,
readOnly: BOOLEAN ← FALSE,
nonCachable: BOOLEAN ← FALSE,
interrupt: BOOLEAN ← FALSE
];
VMSpace:
TYPE =
RECORD [
name: VMSpaceName,
task: CARD32 ← 0
];
VMSpaceName: TYPE =
{dMA, iOP, cP, sparcUserData, sparcUserProgram, sparcSuperData, sparcSuperProgram};
ReadMapEntry:
PROC [ mapEntry: MapEntry ]
RETURNS [ oldMapEntry: MapEntry ];
The map is a in fact a cache. The space can be occupied by another entry.
}.