SparcSoftcardOps.Mesa
Copyright Ó 1988 by Xerox Corporation. All rights reserved.
Bill Jackson (bj) April 19, 1988 1:56:49 am PDT
Christophe Cuenod September 2, 1988 6:32:53 pm PDT
SparcSoftcardOps:
CEDAR
DEFINITIONS ~ {
OPEN SparcSoftcard;
Initialization Operations
SoftcardPresent: PROC RETURNS [ present: BOOL ];
InitializeCPandIOPMaps: PROC;
InsertSoftcardPhyscialMemory: PROC [ reclaim: PROC [ real: CARD16 ] ];
InitializeSoftcard: PROC [ reclaim: PROC [ real: CARD16 ] ];
ResetSoftcard: PROC;
Sparc Operations
SparcReset: PROC;
SparcResetAndStart: PROC;
Cache Operations
SparcCacheDisable: PROC;
SparcCacheEnable: PROC;
SparcCacheFlushAndEnable:
PROC;
To be removed
DMA Operations
DMAState: TYPE = {active, inactive};
SetDMAState:
PROC [dMAState: DMAState];
DMAMode: TYPE = {printer, display, versatecOneShot, versatecStream};
SetDMAMode: PUBLIC PROC [dMAMode: DMAMode];
DMAAddressRegisterLoad:
PROC [ byteAddress:
CARD32 ];
The starting address will be byteAddress troncated to closest 64 bits word bondary. => It is strongely recommanded to start any DMA buffer on a 64 bits word bondary
Map Access
VMSpaceName: TYPE = {dMA, iOP, cP, sparcUserData, sparcUserProgram, sparcSuperData, sparcSuperProgram};
VMSpace:
TYPE = RECORD [
name: VMSpaceName,
task: CARD32
];
Flags:
TYPE =
RECORD [
readOnly: BOOLEAN,
referenced: BOOLEAN,
dirty: BOOLEAN,
nonCachable: BOOLEAN,
interrupt: BOOLEAN
];
MapEntry:
TYPE =
RECORD [
flags: Flags,
vMSpace: VMSpace,
virtualAddressByte: CARD32,
realAddressByte: CARD32
];
WriteMapEntry:
PROC [mapEntry: MapEntry];
ReadMapEntry: PROC [ mapEntry: MapEntry ] RETURNS [ oldMapEntry: MapEntry ];
The map is a in fact a cache. When
Private
PeekPokePeekRestore: PROC [ address0: CARD32, content: CARD16, address1: CARD32 ]
RETURNS [ lowByte: BYTE ];
ControlBitWrite: PROC [ address: CARD32, polarity: Polarity, value: BOOL ];
ControlBitRead: PROC [ address: CARD32, polarity: Polarity ] RETURNS [ value: BOOL ];
}.