/boot,/mdec,[T]MSCP (Part 5 of 22)
Steven M. Schultz
sms at wlv.imsd.contel.com
Sat May 18 16:18:52 AEST 1991
Subject: Part 5 of 22 /boot,/mdec,[T]MSCP updates
Index: /sys/<many>, /usr/src/etc/<several> 2.11BSD
Description:
Repeat-By:
Fix:
See part 0 (the README) for the Description, the Reason and
the instructions on how update your system.
This is part 5 of 22
The external packet area for the [T]MSCP drivers is allocated here.
Enough room is allocated to handle 2 TMSCP plus 2 MSCP controllers.
The reference to 'ubmap' was removed, it's defined in uba.h.
*** /usr/src/sys/pdp/machdep2.c.old Thu May 31 14:00:35 1990
--- /usr/src/sys/pdp/machdep2.c Sat Apr 20 23:32:44 1991
***************
*** 3,9 ****
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*
! * @(#)machdep.c 1.2 (2.10BSD Berkeley) 1/26/90
*/
#include "param.h"
--- 3,9 ----
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
*
! * @(#)machdep.c 2.0 (2.11BSD) 4/20/91
*/
#include "param.h"
***************
*** 27,32 ****
--- 27,34 ----
#include "ram.h"
#include "msgbuf.h"
#include "namei.h"
+ #include "ra.h"
+ #include "tms.h"
#ifdef QUOTA
#include "quota.h"
***************
*** 33,38 ****
--- 35,45 ----
#endif
size_t physmem; /* total amount of physical memory (for savecore) */
+ #if NRAC > 0 || NTMSCP > 0
+ memaddr _iostart, _iobase;
+ ubadr_t _ioumr;
+ u_short _iosize = 2 * (1928 + 1096 + 128); /* enough for 2 TMSCP and 2 MSCP */
+ #endif
#ifndef NOKA5
segm seg5; /* filled in by initialization */
***************
*** 172,177 ****
--- 179,216 ----
maxmem -= B;
}
+ #if NRAC > 0 || NTMSCP > 0
+ {
+ register int s, first;
+ register struct ubmap *ubp;
+ long paddr;
+
+ if ((_iobase = malloc(coremap, btoc(_iosize))) == 0)
+ panic("_iobase");
+ maxmem -= btoc(_iosize);
+ #ifdef UNIBUS_MAP
+ if (ubmap) {
+ _iostart = _iobase;
+ s = (int)btoub(_iosize);
+ /*
+ * this early in the system's life there had better be a UMR or two
+ * available!!
+ */
+ first = malloc(ub_map, s);
+ _ioumr = (ubadr_t)first << 13;
+ ubp = &UBMAP[first];
+ paddr = ctob((ubadr_t)_iostart);
+ while (s--) {
+ ubp->ub_lo = loint(paddr);
+ ubp->ub_hi = hiint(paddr);
+ ubp++;
+ paddr += (ubadr_t)UBPAGE;
+ }
+ }
+ #endif UNIBUS_MAP
+ }
+ #endif NRAC
+
#define B (size_t)(((long)nbuf * (MAXBSIZE)) / ctob(1))
if ((bpaddr = malloc(coremap, B)) == 0)
panic("buffers");
***************
*** 282,288 ****
#endif
#ifdef UNIBUS_MAP
- extern bool_t ubmap;
/*
* Re-initialize the Unibus map registers to statically map
--- 321,326 ----
***************
*** 363,369 ****
if (nbusy == 0)
break;
printf("%d ", nbusy);
! DELAY(40000L * iter);
}
}
printf("done\n");
--- 401,407 ----
if (nbusy == 0)
break;
printf("%d ", nbusy);
! delay(40000L * iter);
}
}
printf("done\n");
***************
*** 420,422 ****
--- 458,486 ----
}
}
}
+
+ #if NRAC > 0 || NTMSCP > 0
+ memaddr
+ _ioget(size)
+ u_int size;
+ {
+ register memaddr base;
+ register u_int csize;
+
+ csize = btoc(size);
+ size = ctob(csize);
+ if (size > _iosize)
+ return(0);
+ _iosize -= size;
+ base = _iobase;
+ _iobase += csize;
+ return(base);
+ }
+
+ ubadr_t
+ _iomap(addr)
+ register memaddr addr;
+ {
+ return(((ubadr_t)(addr - _iostart) << 6) + _ioumr);
+ }
+ #endif NRAC
More information about the Comp.bugs.2bsd
mailing list