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
DIRECTORY
SparcSoftcard USING [ Polarity ];
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 ];
}.