svn commit: r206251 - in user/jmallett/octeon/sys/mips: include mips

Juli Mallett jmallett at FreeBSD.org
Tue Apr 6 07:40:43 UTC 2010


Author: jmallett
Date: Tue Apr  6 07:40:43 2010
New Revision: 206251
URL: http://svn.freebsd.org/changeset/base/206251

Log:
  Switch to using XKSEG for N64.

Modified:
  user/jmallett/octeon/sys/mips/include/cpuregs.h
  user/jmallett/octeon/sys/mips/include/vmparam.h
  user/jmallett/octeon/sys/mips/mips/pmap.c

Modified: user/jmallett/octeon/sys/mips/include/cpuregs.h
==============================================================================
--- user/jmallett/octeon/sys/mips/include/cpuregs.h	Tue Apr  6 05:53:54 2010	(r206250)
+++ user/jmallett/octeon/sys/mips/include/cpuregs.h	Tue Apr  6 07:40:43 2010	(r206251)
@@ -113,6 +113,9 @@
 	((0x2ULL << 62) | ((unsigned long long)(cca) << 59) | (x))
 #define	MIPS_XKPHYS_TO_PHYS(x)	((x) & 0x07ffffffffffffffULL)
 
+#define	MIPS_XKSEG_START		0xc000000000000000
+#define	MIPS_XKSEG_END			0xc00000ff80000000
+
 /* CPU dependent mtc0 hazard hook */
 #ifdef TARGET_OCTEON
 #define	COP0_SYNC  nop; nop; nop; nop; nop;

Modified: user/jmallett/octeon/sys/mips/include/vmparam.h
==============================================================================
--- user/jmallett/octeon/sys/mips/include/vmparam.h	Tue Apr  6 05:53:54 2010	(r206250)
+++ user/jmallett/octeon/sys/mips/include/vmparam.h	Tue Apr  6 07:40:43 2010	(r206251)
@@ -117,8 +117,13 @@
 #define	VM_KERNEL_ALLOC_OFFSET	((vm_offset_t)0x00000000)
 #endif
 
+#if defined(__mips_n64)
+#define	VM_MIN_KERNEL_ADDRESS		((vm_offset_t)0xc000000000000000)
+#define	VM_MAX_KERNEL_ADDRESS		(VM_MIN_KERNEL_ADDRESS + (NPDEPG * NPTEPG * PAGE_SIZE))
+#else
 #define	VM_MIN_KERNEL_ADDRESS		((vm_offset_t)(intptr_t)(int32_t)0xC0000000)
 #define	VM_MAX_KERNEL_ADDRESS		((vm_offset_t)(intptr_t)(int32_t)0xFFFFC000)
+#endif
 #define	VM_KERNEL_WIRED_ADDR_END	(VM_MIN_KERNEL_ADDRESS + VM_KERNEL_ALLOC_OFFSET)
 #if 0
 #define	KERNBASE		(VM_MIN_KERNEL_ADDRESS)

Modified: user/jmallett/octeon/sys/mips/mips/pmap.c
==============================================================================
--- user/jmallett/octeon/sys/mips/mips/pmap.c	Tue Apr  6 05:53:54 2010	(r206250)
+++ user/jmallett/octeon/sys/mips/mips/pmap.c	Tue Apr  6 07:40:43 2010	(r206251)
@@ -3246,16 +3246,29 @@ pmap_kextract(vm_offset_t va)
 	/*
 	 * Kernel virtual.
 	 */
+#if defined(__mips_n64)
+	if (va >= MIPS_XKSEG_START && va < MIPS_XKSEG_END) {
+		pt_entry_t *ptep;
+
+		/* Is the kernel pmap initialized? */
+		if (kernel_pmap->pm_active) {
+			/* It's inside the virtual address range */
+			ptep = pmap_pte(kernel_pmap, va);
+			if (ptep) {
+				return (TLBLO_PTE_TO_PA(*ptep) |
+				    (va & PAGE_MASK));
+			}
+		}
+	}
+#else
 	if (va >= MIPS_KSEG2_START && va < MIPS_KSEG2_END) {
 		pt_entry_t *ptep;
 
 		/* Is the kernel pmap initialized? */
 		if (kernel_pmap->pm_active) {
-#if !defined(__mips_n64)
 			if (va < (vm_offset_t)virtual_sys_start) {
 				panic("%s for special address %p.", __func__, (void *)va);
 			}
-#endif
 
 			/* Its inside the virtual address range */
 			ptep = pmap_pte(kernel_pmap, va);
@@ -3266,6 +3279,7 @@ pmap_kextract(vm_offset_t va)
 			return (0);
 		}
 	}
+#endif
 
 	panic("%s for unknown address space %p.", __func__, (void *)va);
 }


More information about the svn-src-user mailing list