/* Memory relocation addresses and bits. The way the relocation * works is that the DEC PAR's are set up to map two complete * address spaces, KI/KD and UI/UD, into 18 bits, like so: * * KI0-7 * KD0-6 * UI0-7 * UD0-7 * KD7 * * The reason that the KD7 page is there is that some devices are * on the 18 bit bus, and you need to access their registers directly. * The most important of these are the ENABLE box map and control * registers. These registers CANNOT be accessed by the common hack * of frobbing the regular U space mapping registers; they could be * accessed by playing with the DEC U space mapping registers, but * in the general case (/dev/mem) this will not win. This is an * important limitation to keep in mind. From 18 bits, there is * a second set of PARs (which the system treats as its regular * PARs) to access 22 bit address space. These registers are indexed * into using the high 5 bits of the UNIBUS address. Thre is also * a separate UNIBUS map which looks just like the original for use by * DMA devices. See the ABLE documentation for more details. */ #define UISD 0177600 /* first user I-space descriptor register */ #define UISA 0163736 /* first user I-space address register */ #define UDSA 0163756 /* first user D-space address register */ #define RO 02 /* access abilities */ #define RW 06 #define ED 010 /* extend direction */ #define TX 020 /* Software: text segment */ #define OCRO RO /* Seg desc for one click read only seg */ #define OCRW RW /* and read/write */ #define UBMAP 0170200 /* address to access 11/70 UNIBUS map */ #define MEMORY 0177740 /* 11/70 "memory" subsystem */ #define MEMCSR 0172100 /* memory CSR's */ #define MEMFE 01 /* fault on memory error enable */ int *ka6; /* 11/40 KISA6; 11/45 KDSA6 */ /* structure used to address * a sequence of integers. */ struct { int r[]; };