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
 
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to