svn commit: r351245 - in head/sys/powerpc: booke include

Justin Hibbits jhibbits at FreeBSD.org
Tue Aug 20 01:26:03 UTC 2019


Author: jhibbits
Date: Tue Aug 20 01:26:02 2019
New Revision: 351245
URL: https://svnweb.freebsd.org/changeset/base/351245

Log:
  powerpc: Link Book-E kernels at the same address as AIM kernels
  
  Summary:
  Reduce the diff between AIM and Book-E even more.  This also cleans up
  vmparam.h significantly.
  
  Reviewed by:	luporl
  Differential Revision:	https://reviews.freebsd.org/D21301

Modified:
  head/sys/powerpc/booke/pmap.c
  head/sys/powerpc/include/param.h
  head/sys/powerpc/include/vmparam.h

Modified: head/sys/powerpc/booke/pmap.c
==============================================================================
--- head/sys/powerpc/booke/pmap.c	Tue Aug 20 01:06:43 2019	(r351244)
+++ head/sys/powerpc/booke/pmap.c	Tue Aug 20 01:26:02 2019	(r351245)
@@ -219,7 +219,7 @@ uint32_t tlb1_entries;
 
 #define TLB1_ENTRIES (tlb1_entries)
 
-static vm_offset_t tlb1_map_base = VM_MAXUSER_ADDRESS + PAGE_SIZE;
+static vm_offset_t tlb1_map_base = (vm_offset_t)VM_MAXUSER_ADDRESS + PAGE_SIZE;
 
 static tlbtid_t tid_alloc(struct pmap *);
 static void tid_flush(tlbtid_t tid);
@@ -1574,7 +1574,6 @@ mmu_booke_bootstrap(mmu_t mmu, vm_offset_t start, vm_o
 	 * Note that kernel end does not necessarily relate to kernsize.
 	 * kernsize is the size of the kernel that is actually mapped.
 	 */
-	kernstart = trunc_page(start);
 	data_start = round_page(kernelend);
 	data_end = data_start;
 
@@ -2146,7 +2145,7 @@ mmu_booke_map_user_ptr(mmu_t mmu, pmap_t pm, volatile 
     void **kaddr, size_t ulen, size_t *klen)
 {
 
-	if ((uintptr_t)uaddr + ulen > VM_MAXUSER_ADDRESS + PAGE_SIZE)
+	if (trunc_page((uintptr_t)uaddr + ulen) > VM_MAXUSER_ADDRESS)
 		return (EFAULT);
 
 	*kaddr = (void *)(uintptr_t)uaddr;
@@ -2166,7 +2165,7 @@ mmu_booke_decode_kernel_ptr(mmu_t mmu, vm_offset_t add
     vm_offset_t *decoded_addr)
 {
 
-	if (addr < VM_MAXUSER_ADDRESS)
+	if (trunc_page(addr) <= VM_MAXUSER_ADDRESS)
 		*is_user = 1;
 	else
 		*is_user = 0;
@@ -4025,7 +4024,8 @@ tlb1_mapin_region(vm_offset_t va, vm_paddr_t pa, vm_si
 void
 tlb1_init()
 {
-	uint32_t mas0, mas1, mas2, mas3, mas7;
+	vm_offset_t mas2;
+	uint32_t mas0, mas1, mas3, mas7;
 	uint32_t tsz;
 
 	tlb1_get_tlbconf();
@@ -4044,6 +4044,7 @@ tlb1_init()
 
 	tsz = (mas1 & MAS1_TSIZE_MASK) >> MAS1_TSIZE_SHIFT;
 	kernsize += (tsz > 0) ? tsize2size(tsz) : 0;
+	kernstart = trunc_page(mas2);
 
 	/* Setup TLB miss defaults */
 	set_mas4_defaults();

Modified: head/sys/powerpc/include/param.h
==============================================================================
--- head/sys/powerpc/include/param.h	Tue Aug 20 01:06:43 2019	(r351244)
+++ head/sys/powerpc/include/param.h	Tue Aug 20 01:26:02 2019	(r351245)
@@ -103,7 +103,7 @@
 #define	CACHE_LINE_SIZE		(1 << CACHE_LINE_SHIFT)
 
 #define	PAGE_SHIFT	12
-#define	PAGE_SIZE	(1L << PAGE_SHIFT)	/* Page size */
+#define	PAGE_SIZE	(1 << PAGE_SHIFT)	/* Page size */
 #define	PAGE_MASK	(PAGE_SIZE - 1)
 #define	NPTEPG		(PAGE_SIZE/(sizeof (pt_entry_t)))
 

Modified: head/sys/powerpc/include/vmparam.h
==============================================================================
--- head/sys/powerpc/include/vmparam.h	Tue Aug 20 01:06:43 2019	(r351244)
+++ head/sys/powerpc/include/vmparam.h	Tue Aug 20 01:26:02 2019	(r351245)
@@ -72,53 +72,35 @@
 #endif
 
 #ifdef AIM
-#define	VM_MAXUSER_ADDRESS32	((vm_offset_t)0xfffff000)
+#define	VM_MAXUSER_ADDRESS32	0xfffff000
 #else
-#define	VM_MAXUSER_ADDRESS32	((vm_offset_t)0x7ffff000)
+#define	VM_MAXUSER_ADDRESS32	0x7ffff000
 #endif
 
 /*
  * Would like to have MAX addresses = 0, but this doesn't (currently) work
  */
-#if !defined(LOCORE)
 #ifdef __powerpc64__
-#define	VM_MIN_ADDRESS		(0x0000000000000000UL)
-#define	VM_MAXUSER_ADDRESS	(0x3ffffffffffff000UL)
-#define	VM_MAX_ADDRESS		(0xffffffffffffffffUL)
+#define	VM_MIN_ADDRESS		0x0000000000000000
+#define	VM_MAXUSER_ADDRESS	0x3ffffffffffff000
+#define	VM_MAX_ADDRESS		0xffffffffffffffff
+#define	VM_MIN_KERNEL_ADDRESS		0xe000000000000000
+#define	VM_MAX_KERNEL_ADDRESS		0xe0000007ffffffff
+#define	VM_MAX_SAFE_KERNEL_ADDRESS	VM_MAX_KERNEL_ADDRESS
 #else
-#define	VM_MIN_ADDRESS		((vm_offset_t)0)
+#define	VM_MIN_ADDRESS		0
 #define	VM_MAXUSER_ADDRESS	VM_MAXUSER_ADDRESS32
-#define	VM_MAX_ADDRESS		((vm_offset_t)0xffffffff)
+#define	VM_MAX_ADDRESS		0xffffffff
 #endif
+
 #define	SHAREDPAGE		(VM_MAXUSER_ADDRESS - PAGE_SIZE)
-#else /* LOCORE */
-#ifdef BOOKE
-#define	VM_MIN_ADDRESS		0
-#ifdef __powerpc64__
-#define	VM_MAXUSER_ADDRESS	0x3ffffffffffff000
-#else
-#define	VM_MAXUSER_ADDRESS	0x7ffff000
-#endif
-#endif
-#endif /* LOCORE */
 
 #define	FREEBSD32_SHAREDPAGE	(VM_MAXUSER_ADDRESS32 - PAGE_SIZE)
 #define	FREEBSD32_USRSTACK	FREEBSD32_SHAREDPAGE
 
-#ifdef __powerpc64__
-#ifndef LOCORE
-#define	VM_MIN_KERNEL_ADDRESS		0xe000000000000000UL
-#define	VM_MAX_KERNEL_ADDRESS		0xe0000007ffffffffUL
-#else
-#define	VM_MIN_KERNEL_ADDRESS		0xe000000000000000
-#define	VM_MAX_KERNEL_ADDRESS		0xe0000007ffffffff
-#endif
-#define	VM_MAX_SAFE_KERNEL_ADDRESS	VM_MAX_KERNEL_ADDRESS
-#endif
-
-#ifdef AIM
 #define	KERNBASE		0x00100100	/* start of kernel virtual */
 
+#ifdef AIM
 #ifndef __powerpc64__
 #define	VM_MIN_KERNEL_ADDRESS	((vm_offset_t)KERNEL_SR << ADDR_SR_SHFT)
 #define	VM_MAX_SAFE_KERNEL_ADDRESS (VM_MIN_KERNEL_ADDRESS + 2*SEGMENT_LENGTH -1)
@@ -136,12 +118,9 @@
 /* Use the direct map for UMA small allocs on powerpc64. */
 #ifdef __powerpc64__
 #define UMA_MD_SMALL_ALLOC
-#endif
-
-#define	KERNBASE		0x04000100	/* start of kernel physical */
-#ifndef __powerpc64__
-#define	VM_MIN_KERNEL_ADDRESS	0xc0000000
-#define	VM_MAX_KERNEL_ADDRESS	0xffffefff
+#else
+#define	VM_MIN_KERNEL_ADDRESS		0xc0000000
+#define	VM_MAX_KERNEL_ADDRESS		0xffffefff
 #define	VM_MAX_SAFE_KERNEL_ADDRESS	VM_MAX_KERNEL_ADDRESS
 #endif
 


More information about the svn-src-head mailing list