PERFORCE change 73488 for review

Juli Mallett jmallett at FreeBSD.org
Fri Mar 18 16:15:11 PST 2005


http://perforce.freebsd.org/chv.cgi?CH=73488

Change 73488 by jmallett at jmallett_windward on 2005/03/19 00:14:37

	Stop using cache, sort phys_avail[]

Affected files ...

.. //depot/projects/mips/sys/conf/Makefile.mips#17 edit
.. //depot/projects/mips/sys/conf/kern.sgimips.mk#2 edit
.. //depot/projects/mips/sys/mips/conf/GENERIC#17 edit
.. //depot/projects/mips/sys/mips/conf/INDY#16 edit
.. //depot/projects/mips/sys/mips/mips/pmap.c#41 edit

Differences ...

==== //depot/projects/mips/sys/conf/Makefile.mips#17 (text+ko) ====


==== //depot/projects/mips/sys/conf/kern.sgimips.mk#2 (text+ko) ====

@@ -4,4 +4,4 @@
 #
 # $FreeBSD$
 
-TEXTADDR?=	0x80069000
+TEXTADDR?=	0xffffffffa0069000

==== //depot/projects/mips/sys/mips/conf/GENERIC#17 (text+ko) ====

@@ -10,7 +10,7 @@
 
 makeoptions	MIPSOPTS=-mips3		#Build for a MIPS III
 
-#makeoptions	TEXTADDR=0x88069000	#Indy
+#makeoptions	TEXTADDR=0xa8069000	#Indy
 
 # Platform support
 platform	sgimips			#SGI MIPS systems.

==== //depot/projects/mips/sys/mips/conf/INDY#16 (text+ko) ====

@@ -10,9 +10,7 @@
 
 hints		"INDY.hints"
 
-makeoptions	MIPSOPTS=-mips3		#Build for a MIPS III
-
-makeoptions	TEXTADDR=0xFFFFFFFF88069000	#Indy
+makeoptions	TEXTADDR=0xFFFFFFFFA8069000	#Indy
 
 # Platform support
 platform	sgimips			#SGI MIPS systems.

==== //depot/projects/mips/sys/mips/mips/pmap.c#41 (text+ko) ====

@@ -248,7 +248,7 @@
 	pa = phys_avail[0];
 	phys_avail[0] += size;
 
-	va = MIPS_PHYS_TO_KSEG0(pa);
+	va = MIPS_PHYS_TO_KSEG1(pa);
 	bzero((caddr_t) va, size);
 	return va;
 }
@@ -264,6 +264,26 @@
 {
 	int i;
 
+	/* Sort. */
+again:
+	for (i = 0; phys_avail[i + 1] != 0; i += 2) {
+		if (i < 2)
+			continue;
+		if (phys_avail[i - 2] > phys_avail[i]) {
+			vm_paddr_t ptemp[2];
+
+			ptemp[0] = phys_avail[i+0];
+			ptemp[1] = phys_avail[i+1];
+
+			phys_avail[i + 0] = phys_avail[i - 2];
+			phys_avail[i + 1] = phys_avail[i - 1];
+
+			phys_avail[i - 2] = ptemp[0];
+			phys_avail[i - 1] = ptemp[1];
+			goto again;
+		}
+	}
+
 	/*
 	 * Steal the message buffer from the beginning of memory.
 	 */
@@ -331,7 +351,7 @@
 			break;
 	}
 
-	va = (void *)MIPS_PHYS_TO_KSEG0(m->phys_addr);
+	va = (void *)MIPS_PHYS_TO_KSEG1(m->phys_addr);
 	if ((wait & M_ZERO) && (m->flags & PG_ZERO) == 0)
 		bzero(va, PAGE_SIZE);
 	return (va);
@@ -342,7 +362,7 @@
 {
 	vm_page_t m;
 
-	m = PHYS_TO_VM_PAGE(MIPS_KSEG0_TO_PHYS((vm_offset_t)mem));
+	m = PHYS_TO_VM_PAGE(MIPS_KSEG1_TO_PHYS((vm_offset_t)mem));
 	vm_page_lock_queues();
 	vm_page_free(m);
 	vm_page_unlock_queues();
@@ -649,7 +669,7 @@
 #if 0 /* XXX notyet, need pmap_extract etc., to love us. */
 	return MIPS_PHYS_TO_XKPHYS(MIPS_XKPHYS_UC, start);
 #endif
-	return MIPS_PHYS_TO_KSEG0(start);
+	return MIPS_PHYS_TO_KSEG1(start);
 }
 
 void
@@ -699,7 +719,7 @@
 	vm_page_unlock_queues();
 	VM_OBJECT_UNLOCK(pmap->pm_pteobj);
 
-	pmap->pm_lev1 = (pt_entry_t*) MIPS_PHYS_TO_KSEG0(VM_PAGE_TO_PHYS(lev1pg));
+	pmap->pm_lev1 = (pt_entry_t*) MIPS_PHYS_TO_KSEG1(VM_PAGE_TO_PHYS(lev1pg));
 
 	/* install self-referential address mapping entry (not PG_ASM) */
 	pmap->pm_lev1[PTLEV1I] = pmap_phys_to_pte(VM_PAGE_TO_PHYS(lev1pg))
@@ -1254,7 +1274,7 @@
 void
 pmap_zero_page(vm_page_t m)
 {
-	vm_offset_t va = MIPS_PHYS_TO_KSEG0(VM_PAGE_TO_PHYS(m));
+	vm_offset_t va = MIPS_PHYS_TO_KSEG1(VM_PAGE_TO_PHYS(m));
 	bzero((caddr_t) va, PAGE_SIZE);
 }
 
@@ -1270,7 +1290,7 @@
 void
 pmap_zero_page_area(vm_page_t m, int off, int size)
 {
-	vm_offset_t va = MIPS_PHYS_TO_KSEG0(VM_PAGE_TO_PHYS(m));
+	vm_offset_t va = MIPS_PHYS_TO_KSEG1(VM_PAGE_TO_PHYS(m));
 	bzero((char *)(caddr_t)va + off, size);
 }
 
@@ -1284,7 +1304,7 @@
 void
 pmap_zero_page_idle(vm_page_t m)
 {
-	vm_offset_t va = MIPS_PHYS_TO_KSEG0(VM_PAGE_TO_PHYS(m));
+	vm_offset_t va = MIPS_PHYS_TO_KSEG1(VM_PAGE_TO_PHYS(m));
 	bzero((caddr_t) va, PAGE_SIZE);
 }
 
@@ -1298,8 +1318,8 @@
 void
 pmap_copy_page(vm_page_t msrc, vm_page_t mdst)
 {
-	vm_offset_t src = MIPS_PHYS_TO_KSEG0(VM_PAGE_TO_PHYS(msrc));
-	vm_offset_t dst = MIPS_PHYS_TO_KSEG0(VM_PAGE_TO_PHYS(mdst));
+	vm_offset_t src = MIPS_PHYS_TO_KSEG1(VM_PAGE_TO_PHYS(msrc));
+	vm_offset_t dst = MIPS_PHYS_TO_KSEG1(VM_PAGE_TO_PHYS(mdst));
 	bcopy((caddr_t) src, (caddr_t) dst, PAGE_SIZE);
 }
 


More information about the p4-projects mailing list