Subject: Re: UVM and SparcStation5
To: None <kurt.schreiner@uni-mainz.de>
From: Chuck Cranor <chuck@maria.wustl.edu>
List: port-sparc
Date: 02/17/1998 10:09:08
>between the sups i do? there are the daily source-update mails, ok,
>but can i get some kind of diffs somewhere or do these mself?
>hm, perhaps i should study the sup docs again? ...


if netbsd allowed anonymous read-only access to the CVS tree like
the other BSD projects then you could easily generate diffs, logs, etc.
unfortunately, the "source-update mails" (aka source-changes) combined
with local diffs is the best you are going to be able to do right now.


chuck

ps- the change you are interested in is this:

----------------------------
revision 1.113
date: 1998/02/14 09:28:52;  author: pk;  state: Exp;  lines: +15 -6
Think-o in pmap_extract4m(), detected by UVM.
----------------------------

Index: pmap.c
===================================================================
RCS file: /cvsroot/src/sys/arch/sparc/sparc/pmap.c,v
retrieving revision 1.112
retrieving revision 1.113
diff -c -r1.112 -r1.113
*** pmap.c	1998/02/10 14:11:43	1.112
--- pmap.c	1998/02/14 09:28:52	1.113
***************
*** 1,4 ****
! /*	$NetBSD: pmap.c,v 1.112 1998/02/10 14:11:43 mrg Exp $ */
  
  /*
   * Copyright (c) 1996
--- 1,4 ----
! /*	$NetBSD: pmap.c,v 1.113 1998/02/14 09:28:52 pk Exp $ */
  
  /*
   * Copyright (c) 1996
***************
*** 5901,5924 ****
  		return (0);
  	}
  
! 	rm = &pm->pm_regmap[VA_VREG(va)];
! 	if (rm == NULL) {
  #ifdef DEBUG
  		if (pmapdebug & PDB_FOLLOW)
  			printf("pmap_extract: no regmap entry");
  #endif
  		return (0);
  	}
! 	sm = &rm->rg_segmap[VA_VSEG(va)];
! 	if (sm == NULL) {
  #ifdef DEBUG
  		if (pmapdebug & PDB_FOLLOW)
  			panic("pmap_extract: no segmap");
  #endif
  		return (0);
  	}
- 	pte = sm->sg_pte[VA_SUN4M_VPG(va)];
  
  	if ((pte & SRMMU_TETYPE) != SRMMU_TEPTE) {
  #ifdef DEBUG
  		if (pmapdebug & PDB_FOLLOW)
--- 5901,5933 ----
  		return (0);
  	}
  
! 	if ((rm = pm->pm_regmap) == NULL) {
  #ifdef DEBUG
  		if (pmapdebug & PDB_FOLLOW)
  			printf("pmap_extract: no regmap entry");
  #endif
  		return (0);
  	}
! 
! 	rm += VA_VREG(va);
! 	if ((sm = rm->rg_segmap) == NULL) {
  #ifdef DEBUG
  		if (pmapdebug & PDB_FOLLOW)
  			panic("pmap_extract: no segmap");
  #endif
  		return (0);
  	}
  
+ 	sm += VA_VSEG(va);
+ 	if (sm->sg_pte == NULL) {
+ #ifdef DEBUG
+ 		if (pmapdebug & PDB_FOLLOW)
+ 			panic("pmap_extract: no ptes");
+ #endif
+ 		return (0);
+ 	}
+ 
+ 	pte = sm->sg_pte[VA_SUN4M_VPG(va)];
  	if ((pte & SRMMU_TETYPE) != SRMMU_TEPTE) {
  #ifdef DEBUG
  		if (pmapdebug & PDB_FOLLOW)