/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