VAX750: Implement the buffered data path CSRs in the Unibus adapter.
These registers are referenced by the I/O flow in Ultrix but apparently are never referenced by the VMS I/O subsystem.
This commit is contained in:
parent
d69b34e410
commit
a747c0f860
1 changed files with 33 additions and 1 deletions
|
@ -33,7 +33,7 @@
|
|||
|
||||
/* Unibus adapter */
|
||||
|
||||
#define UBA_NDPATH 16 /* number of data paths */
|
||||
#define UBA_NDPATH 4 /* number of data paths */
|
||||
#define UBA_NMAPR 496 /* number of map reg */
|
||||
|
||||
/* Unibus adapter configuration register */
|
||||
|
@ -54,6 +54,16 @@
|
|||
UBACSR_ERR)
|
||||
#define UBACSR_WR 0
|
||||
|
||||
/* Data path registers */
|
||||
|
||||
#define UBADPR_OF 0x010
|
||||
#define UBADPR_ERR 0x80000000 /* buf not empty - ni */
|
||||
#define UBADPR_NXM 0x40000000 /* nonexistent memory */
|
||||
#define UBADPR_UCE 0x20000000 /* uncorrectable error */
|
||||
#define UBADPR_PUR 0x00000001 /* purge request */
|
||||
#define UBADPR_RD 0xE0000000
|
||||
#define UBADPR_W1C 0xC0000000
|
||||
|
||||
/* Map registers */
|
||||
|
||||
#define UBAMAP_OF 0x200
|
||||
|
@ -82,6 +92,7 @@ uint32 uba_csr1 = 0; /* csr reg 1 */
|
|||
uint32 uba_csr2 = 0; /* csr reg 2 */
|
||||
uint32 uba_csr3 = 0; /* csr reg 3 */
|
||||
uint32 uba_int = 0; /* UBA interrupt */
|
||||
uint32 uba_dpr[UBA_NDPATH] = { 0 }; /* number data paths */
|
||||
uint32 uba_map[UBA_NMAPR] = { 0 }; /* map registers */
|
||||
int32 autcon_enb = 1; /* autoconfig enable */
|
||||
|
||||
|
@ -226,6 +237,18 @@ switch (ofs) { /* case on offset */
|
|||
*val = (uba_csr3 & UBACSR_RD);
|
||||
break;
|
||||
|
||||
case UBADPR_OF + 1:
|
||||
case UBADPR_OF + 2: case UBADPR_OF + 3:
|
||||
case UBADPR_OF + 4: case UBADPR_OF + 5:
|
||||
case UBADPR_OF + 6: case UBADPR_OF + 7:
|
||||
case UBADPR_OF + 8: case UBADPR_OF + 9:
|
||||
case UBADPR_OF + 10: case UBADPR_OF + 11:
|
||||
case UBADPR_OF + 12: case UBADPR_OF + 13:
|
||||
case UBADPR_OF + 14: case UBADPR_OF + 15:
|
||||
idx = ofs - UBADPR_OF;
|
||||
*val = uba_dpr[idx] & UBADPR_RD;
|
||||
break;
|
||||
|
||||
default:
|
||||
return SCPE_NXM;
|
||||
}
|
||||
|
@ -274,6 +297,15 @@ switch (ofs) { /* case on offset */
|
|||
uba_csr3 = (val & UBACSR_WR);
|
||||
break;
|
||||
|
||||
case UBADPR_OF + 0: /* DPR */
|
||||
break; /* direct */
|
||||
|
||||
case UBADPR_OF + 1:
|
||||
case UBADPR_OF + 2: case UBADPR_OF + 3:
|
||||
idx = ofs - UBADPR_OF;
|
||||
uba_dpr[idx] = uba_dpr[idx] & ~(val & UBADPR_W1C);
|
||||
break;
|
||||
|
||||
default:
|
||||
return SCPE_NXM;
|
||||
break;
|
||||
|
|
Loading…
Add table
Reference in a new issue