[comp.bugs.2bsd] /boot,/mdec,/[T]MSCP

sms@wlv.imsd.contel.com (Steven M. Schultz) (05/18/91)

Subject: Part 9 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 9 of 22

The RL02 driver could not be used in the GENERIC kernel on a UNIBUS
system.

*** /usr/src/sys/pdpuba/rl.c.old	Tue Apr  3 13:26:00 1990
--- /usr/src/sys/pdpuba/rl.c	Wed Apr 24 20:51:12 1991
***************
*** 32,37 ****
--- 32,39 ----
  
  struct	rldevice *RLADDR;
  
+ static	int	q22bae = 1;
+ 
  struct	buf	rrlbuf[NRL];	/* Raw header for each drive */
  struct	buf	rlutab[NRL];	/* Seek structure for each device */
  struct	buf	rltab;
***************
*** 274,282 ****
  	rladdr->rlda = (rl.chn << 6) | rl.sn;
  	rladdr->rlba = (caddr_t)rl.rl_un.w[1];
  	rladdr->rlmp = -(rl.bpart >> 1);
! #ifdef Q22
! 	rladdr->rlbae = rl.rl_un.w[0];
! #endif
  	rladdr->rlcs = rl.com | (rl.rl_un.w[0] & 03) << 4;
  #ifdef UCB_METER
  	if (rl_dkn >= 0) {
--- 276,285 ----
  	rladdr->rlda = (rl.chn << 6) | rl.sn;
  	rladdr->rlba = (caddr_t)rl.rl_un.w[1];
  	rladdr->rlmp = -(rl.bpart >> 1);
! 	if	(q22bae == 1)
! 		q22bae = (fioword(&rladdr->rlbae) == -1 ? -1 : 0);
! 	if	(q22bae == 0)
! 		rladdr->rlbae = rl.rl_un.w[0];
  	rladdr->rlcs = rl.com | (rl.rl_un.w[0] & 03) << 4;
  #ifdef UCB_METER
  	if (rl_dkn >= 0) {
***************
*** 458,466 ****
  		} else {
  #endif
  			rladdr->rlba = loint(paddr);
! #ifdef Q22
! 			rladdr->rlbae = hiint(paddr);
! #endif
  			com |= (hiint(paddr) & 03) << 4;
  #ifdef UNIBUS_MAP
  		}
--- 461,470 ----
  		} else {
  #endif
  			rladdr->rlba = loint(paddr);
! 			if	(q22bae == 1)
! 				q22bae = (fioword(&rladdr->rlbae) == -1 ? -1:0);
! 			if	(q22bae == 0)
! 				rladdr->rlbae = hiint(paddr);
  			com |= (hiint(paddr) & 03) << 4;
  #ifdef UNIBUS_MAP
  		}

sms@wlv.imsd.contel.com (Steven M. Schultz) (05/18/91)

Subject: Part 12 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 12 of 22

Used the delay() routine instead of the macro to save space.
Partitions were changed for the Fuji160 (RM2X drive type).
For the GENERIC kernel the address of the drive type variable is printed 
and a delay of 10 seconds is performed to give time to halt the processor
before accessing the disc.

*** /usr/src/sys/pdpuba/xp.c.old	Tue Apr  3 09:48:00 1990
--- /usr/src/sys/pdpuba/xp.c	Fri May 10 21:54:44 1991
***************
*** 3,9 ****
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)xp.c	1.1 (2.10BSD Berkeley) 12/1/86
   */
  
  /*
--- 3,9 ----
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)xp.c	1.2 (2.11BSD) 5/4/91
   */
  
  /*
***************
*** 230,239 ****
  	   9600,	  0,	/* a: cyl   0 -  29 */
  	   9600,	 30,	/* b: cyl  30 -  59 */
  	 244160,	 60,	/* c: cyl  60 - 822 */
! 	 125440,	 60,	/* d: cyl  60 - 451 */
! 	 118720,	452,	/* e: cyl 452 - 822 */
! 	  59520,	452,	/* f: cyl 452 - 637 */
! 	  59200,	638,	/* g: cyl 638 - 822 */
  	 263360,	  0,	/* h: cyl   0 - 822 */
  }, dv_sizes[8] = { /* Diva Comp V, Ampex 9300 in direct mode */
  	   9405,	  0,	/* a: cyl   0 -  14 */
--- 230,239 ----
  	   9600,	  0,	/* a: cyl   0 -  29 */
  	   9600,	 30,	/* b: cyl  30 -  59 */
  	 244160,	 60,	/* c: cyl  60 - 822 */
! 	 164800,	 60,	/* d: cyl  60 - 574 */
! 	  79360,	575,	/* e: cyl 575 - 822 */
! 	  39680,	575,	/* f: cyl 575 - 698 */
! 	  39680,	699,	/* g: cyl 699 - 822 */
  	 263360,	  0,	/* h: cyl   0 - 822 */
  }, dv_sizes[8] = { /* Diva Comp V, Ampex 9300 in direct mode */
  	   9405,	  0,	/* a: cyl   0 -  14 */
***************
*** 295,300 ****
--- 295,304 ----
  	register int i;
  	register struct hpdevice *xpaddr;
  
+ #if	(PDP11 == GENERIC)
+ 	printf("\nxp_drive=0%o xp_controller=0%o\n",xp_drive,xp_controller);
+ 	delay(10000000L);	/* 10 secs to halt and patch xp_drive */
+ #endif
  	for (i = 0; i < NXPC; i++)
  		if (((xpaddr = xp_controller[i].xp_addr) == 0)
  			|| (xpattach(xpaddr, i) == 0))
***************
*** 381,390 ****
  		xpaddr->hpcs1.w = 0;
  		xpaddr->hpcs2.w = j;
  		xpaddr->hpcs1.w = HP_GO;	/* testing... */
! 		{
! 			int x = 6000;
! 			while (--x);		/* delay */
! 		}
  		dummy = xpaddr->hpds;
  		if (xpaddr->hpcs2.w & HPCS2_NED) {
  			xpaddr->hpcs2.w = HPCS2_CLR;
--- 385,391 ----
  		xpaddr->hpcs1.w = 0;
  		xpaddr->hpcs2.w = j;
  		xpaddr->hpcs1.w = HP_GO;	/* testing... */
! 		delay(6000L);
  		dummy = xpaddr->hpds;
  		if (xpaddr->hpcs2.w & HPCS2_NED) {
  			xpaddr->hpcs2.w = HPCS2_CLR;
***************
*** 1128,1134 ****
  		}
  #endif
  		/* Emulex controller emulating two RM03's needs a delay */
! 		DELAY(50000L);
  		while (xpaddr->hpcs1.w & HP_GO)
  			continue;
  		if (xpaddr->hpcs1.w & HP_TRE) {
--- 1129,1135 ----
  		}
  #endif
  		/* Emulex controller emulating two RM03's needs a delay */
! 		delay(50000L);
  		while (xpaddr->hpcs1.w & HP_GO)
  			continue;
  		if (xpaddr->hpcs1.w & HP_TRE) {

sms@wlv.imsd.contel.com (Steven M. Schultz) (05/18/91)

Subject: Part 13 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 13 of 22

The existence of a UNIBUS MAP is tested rather than being assumed.

*** /usr/src/sys/sys/sys_net.c.old	Wed Dec 19 10:16:49 1990
--- /usr/src/sys/sys/sys_net.c	Sun Mar 17 01:14:29 1991
***************
*** 122,138 ****
  	 * This is early in the systems life, so there had better be
  	 * sufficient UMRs available!
  	 */
! 	miostart = miobase;
! 	s = (int)btoub(miosize);
! 	first = NETUBAA(s);
! 	mioumr = (ubadr_t)first << 13;
! 	ubp = &UBMAP[first];
! 	paddr = ctob((ubadr_t)miostart);
! 	while	(s--) {
! 		ubp->ub_lo = loint(paddr);
! 		ubp->ub_hi = hiint(paddr);
! 		ubp++;
! 		paddr += (ubadr_t)UBPAGE;
  	}
  #endif UNIBUS_MAP
  
--- 122,140 ----
  	 * This is early in the systems life, so there had better be
  	 * sufficient UMRs available!
  	 */
! 	if (mfkd(&ubmap)) {
! 		miostart = miobase;
! 		s = (int)btoub(miosize);
! 		first = NETUBAA(s);
! 		mioumr = (ubadr_t)first << 13;
! 		ubp = &UBMAP[first];
! 		paddr = ctob((ubadr_t)miostart);
! 		while	(s--) {
! 			ubp->ub_lo = loint(paddr);
! 			ubp->ub_hi = hiint(paddr);
! 			ubp++;
! 			paddr += (ubadr_t)UBPAGE;
! 		}
  	}
  #endif UNIBUS_MAP