/* ubareg.h 4.2 12/17/80 */ /* * Unibus adapter */ #define UBA0 0x80060000 /* sys virt i/o for UBA 0 */ #define UBA0_DEV (UBA0+0x2000-0160000) /* sys virt of device regs */ #define UNIBASE 0760000 /* UNIBUS phys base of i/o reg's */ #if VAX==780 /* UBA Configuration Register, CNFGR */ #define PARFLT 0x80000000 /* SBI Parity Fault */ #define WSQFLT 0x40000000 /* SBI Write Sequence Fault */ #define URDFLT 0x20000000 /* SBI Unexpected Read Fault */ #define ISQFLT 0x10000000 /* SBI Interlock Sequence Fault */ #define MXTFLT 0x8000000 /* SBI Multiple Transmitter Fault */ #define XMTFLT 0x4000000 /* UBA is transmit faulter */ #define ADPDN 0x800000 /* Adapter Power Down */ #define ADPUP 0x400000 /* Adapter Power Up */ #define UBINIT 0x40000 /* UNIBUS INIT is asserted */ #define UBPDN 0x20000 /* UNIBUS Power Down */ #define UBIC 0x10000 /* UNIBUS Initialization */ /* UNIBUS Ready */ #define UBACOD 0xff /* UBA Code bits */ /* UBA Control Register, UBACR */ #define MRD16 0x40000000 /* Map Reg Disable Bit 4 */ #define MRD8 0x20000000 /* Map Reg Disable Bit 3 */ #define MRD4 0x10000000 /* Map Reg Disable Bit 2 */ #define MRD2 0x8000000 /* Map Reg Disable Bit 1 */ #define MRD1 0x4000000 /* Map Reg Disable Bit 0 */ #define IFS 0x40 /* Interrupt Field Switch */ #define BRIE 0x20 /* BR Interrupt Enable */ #define USEFIE 0x10 /* UNIBUS to SBI Error Field IE */ #define SUEFIE 0x8 /* SBI to UNIBUS Error Field IE */ #define CNFIE 0x4 /* Configuration IE */ #define UPF 0x2 /* UNIBUS Power Fail */ #define ADINIT 0x1 /* Adapter Init */ /* UBA Status Register, UASR */ #define BR7FULL 0x8000000 /* BR7 Receive Vector Rg Full */ #define BR6FULL 0x4000000 /* BR6 Receive Vector Reg Full */ #define BR5FULL 0x2000000 /* BR5 Receive Vector Reg Full */ #define BR4FULL 0x1000000 /* BR4 Receive Vector Reg Full */ #define RDTO 0x400 /* UNIBUS to SBI Read Data Timeout */ #define RDS 0x200 /* Read Data Substitute */ #define CRD 0x100 /* Corrected Read Data */ #define CXTER 0x80 /* Command Transmit Error */ #define CXTMO 0x40 /* Command Transmit Timeout */ #define DPPE 0x20 /* Data Path Parity Error */ #define IVMR 0x10 /* Invalid Map Register */ #define MRPF 0x8 /* Map Register Parity Failure */ #define LEB 0x4 /* Lost Error */ #define UBSTO 0x2 /* UNIBUS Select Timeout */ #define UBSSTO 0x1 /* UNIBUS Slave Sync Timeout */ /* Failed Map Entry Register, FMER */ #define FMRN 0x1ff /* Failed Map Reg. No. Field */ /* Failed UNIBUS Address Register, FUBAR */ #define FUA 0xffff /* Failed UNIBUS Address Field */ /* BR Receive Vector register, BRRVR */ #define AIRI 0x80000000 /* Adapter Interrupt Request */ #define DIV 0xffff /* Device Interrupt Vector Field */ #endif /* Data Path Register, DPR */ #define BNE 0x80000000 /* Buffer Not Empty - Purge */ #define BTE 0x40000000 /* Buffer Transfer Error */ #define DPF 0x20000000 /* DP Function (RO) */ #define BS 0x7f0000 /* Buffer State Field */ #define BUBA 0xffff /* Buffered UNIBUS Address */ /* Map Register, MR */ #define MRV 0x80000000 /* Map Register Valid */ #define BO 0x2000000 /* Byte Offset Bit */ #define DPDB 0x1e00000 /* Data Path Designator Field */ #define SBIPFN 0xfffff /* SBI Page Address Field */ /* * Unibus maps */ #ifdef KERNEL #define UAMSIZ 50 struct map ubamap[UAMSIZ]; char bdpwant; /* someone is waiting for buffered data path */ #if VAX==780 #define NUBABDP 15 #else #define NUBABDP 3 #endif struct map bdpmap[NUBABDP]; char umrwant; /* ... for unibus map registers */ #endif /* * UBA registers */ struct uba_regs { int uba_cnfgr; int uba_cr; int uba_sr; int uba_dcr; int uba_fmer; int uba_fubar; int pad1[2]; int uba_brsvr[4]; int uba_brrvr[4]; int uba_dpr[16]; int pad2[480]; struct pte uba_map[496]; }; union ub_info { struct ub_Info { unsigned int Ub_off:18, Ub_npf:10, Ub_bdp:4; } ub_I; int ub_word; }; #define ub_off ub_I.Ub_off #define ub_npf ub_I.Ub_npf #define ub_bdp ub_I.Ub_bdp