Author: jmallett
Date: Sat Apr 17 07:20:01 2010
New Revision: 206746
URL: http://svn.freebsd.org/changeset/base/206746

Log:
  o) Add NPDEPG, like NPTEPG but for PDEs.
  o) Remove NBPG, PGOFSET and PGSHIFT.  Use the standard names.
  o) Remove some unused macros and move things from param.h to vmparam.h that
     belong in the latter.  (Actually, all of the kernel segment values, virtual
     addresses, etc., belong in one place, but this is a step in the right
     direction.)

Modified:
  head/sys/mips/include/param.h
  head/sys/mips/include/pte.h
  head/sys/mips/include/vmparam.h
  head/sys/mips/mips/exception.S
  head/sys/mips/mips/genassym.c
  head/sys/mips/mips/locore.S
  head/sys/mips/mips/mpboot.S
  head/sys/mips/mips/pmap.c
  head/sys/mips/mips/support.S
  head/sys/mips/mips/tlb.S
  head/sys/mips/mips/trap.c
  head/sys/mips/mips/vm_machdep.c

Modified: head/sys/mips/include/param.h
==============================================================================
--- head/sys/mips/include/param.h       Sat Apr 17 04:54:38 2010        
(r206745)
+++ head/sys/mips/include/param.h       Sat Apr 17 07:20:01 2010        
(r206746)
@@ -100,28 +100,14 @@
 #define        CACHE_LINE_SHIFT        6
 #define        CACHE_LINE_SIZE         (1 << CACHE_LINE_SHIFT)
 
-#define        NBPG            4096            /* bytes/page */
-#define        PGOFSET         (NBPG-1)        /* byte offset into page */
-#define        PGSHIFT         12              /* LOG2(NBPG) */
-
 #define        PAGE_SHIFT      12              /* LOG2(PAGE_SIZE) */
 #define        PAGE_SIZE       (1<<PAGE_SHIFT) /* bytes/page */
 #define        PAGE_MASK       (PAGE_SIZE-1)
 #define        NPTEPG          (PAGE_SIZE/(sizeof (pt_entry_t)))
-
-#define        NBSEG           0x400000        /* bytes/segment */
-#define        SEGOFSET        (NBSEG-1)       /* byte offset into segment */
-#define        SEGSHIFT        22              /* LOG2(NBSEG) */
+#define        NPDEPG          (PAGE_SIZE/(sizeof (pd_entry_t)))
 
 #define        MAXPAGESIZES    1               /* maximum number of supported 
page sizes */
 
-/* XXXimp: This has moved to vmparam.h */
-/* Also, this differs from the mips2 definition, but likely is better */
-/* since this means the kernel won't chew up TLBs when it is executing */
-/* code */
-#define        KERNBASE        0x80000000      /* start of kernel virtual */
-#define        BTOPKERNBASE    ((u_long)KERNBASE >> PGSHIFT)
-
 #define        BLKDEV_IOSIZE   2048            /* xxx: Why is this 1/2 page? */
 #define        MAXDUMPPGS      1               /* xxx: why is this only one? */
 
@@ -137,8 +123,8 @@
 #define        UPAGES                  2
 
 /* pages ("clicks") (4096 bytes) to disk blocks */
-#define        ctod(x)         ((x) << (PGSHIFT - DEV_BSHIFT))
-#define        dtoc(x)         ((x) >> (PGSHIFT - DEV_BSHIFT))
+#define        ctod(x)         ((x) << (PAGE_SHIFT - DEV_BSHIFT))
+#define        dtoc(x)         ((x) >> (PAGE_SHIFT - DEV_BSHIFT))
 
 /*
  * Map a ``block device block'' to a file system block.
@@ -149,18 +135,18 @@
 #define        bdbtofsb(bn)    ((bn) / (BLKDEV_IOSIZE/DEV_BSIZE))
 
 /*
- * Conversion macros
+ * Mach derived conversion macros
  */
-#define        mips_round_page(x)      ((((unsigned long)(x)) + NBPG - 1) & 
~(NBPG-1))
-#define        mips_trunc_page(x)      ((unsigned long)(x) & ~(NBPG-1))
-#define        mips_btop(x)            ((unsigned long)(x) >> PGSHIFT)
-#define        mips_ptob(x)            ((unsigned long)(x) << PGSHIFT)
-#define        round_page              mips_round_page
-#define        trunc_page              mips_trunc_page
-#define        atop(x)                 ((unsigned long)(x) >> PAGE_SHIFT)
-#define        ptoa(x)                 ((unsigned long)(x) << PAGE_SHIFT)
+#define round_page(x)          (((unsigned long)(x) + PAGE_MASK) & ~PAGE_MASK)
+#define trunc_page(x)          ((unsigned long)(x) & ~PAGE_MASK)
+
+#define atop(x)                        ((unsigned long)(x) >> PAGE_SHIFT)
+#define ptoa(x)                        ((unsigned long)(x) << PAGE_SHIFT)
+
+#define mips_btop(x)           ((unsigned long)(x) >> PAGE_SHIFT)
+#define mips_ptob(x)           ((unsigned long)(x) << PAGE_SHIFT)
 
-#define        pgtok(x)                ((x) * (PAGE_SIZE / 1024))
+#define        pgtok(x)                ((unsigned long)(x) * (PAGE_SIZE / 
1024))
 
 #ifndef _KERNEL
 #define        DELAY(n)        { register int N = (n); while (--N > 0); }

Modified: head/sys/mips/include/pte.h
==============================================================================
--- head/sys/mips/include/pte.h Sat Apr 17 04:54:38 2010        (r206745)
+++ head/sys/mips/include/pte.h Sat Apr 17 07:20:01 2010        (r206746)
@@ -126,7 +126,7 @@ typedef pt_entry_t *pd_entry_t;
 #define        pfn_to_vad(x)   (((x) & PTE_FRAME) << PTE_SHIFT)
 
 /* User virtual to pte offset in page table */
-#define        vad_to_pte_offset(adr)  (((adr) >> PGSHIFT) & (NPTEPG -1))
+#define        vad_to_pte_offset(adr)  (((adr) >> PAGE_SHIFT) & (NPTEPG -1))
 
 #define        mips_pg_v(entry)        ((entry) & PTE_V)
 #define        mips_pg_wired(entry)    ((entry) & PTE_WIRED)

Modified: head/sys/mips/include/vmparam.h
==============================================================================
--- head/sys/mips/include/vmparam.h     Sat Apr 17 04:54:38 2010        
(r206745)
+++ head/sys/mips/include/vmparam.h     Sat Apr 17 07:20:01 2010        
(r206746)
@@ -97,13 +97,19 @@
 
 /* user/kernel map constants */
 #define        VM_MIN_ADDRESS          ((vm_offset_t)0x00000000)
+#define        VM_MAX_ADDRESS          
((vm_offset_t)(intptr_t)(int32_t)0xffffffff)
+
+#define        VM_MINUSER_ADDRESS      ((vm_offset_t)0x00000000)
 #define        VM_MAXUSER_ADDRESS      ((vm_offset_t)0x80000000)
 #define        VM_MAX_MMAP_ADDR        VM_MAXUSER_ADDRESS
-#define        VM_MAX_ADDRESS          ((vm_offset_t)0x80000000)
 
 #define        VM_MIN_KERNEL_ADDRESS           ((vm_offset_t)0xC0000000)
-#define        VM_KERNEL_WIRED_ADDR_END        (VM_MIN_KERNEL_ADDRESS)
-#define        VM_MAX_KERNEL_ADDRESS   ((vm_offset_t)0xFFFFC000)
+#define        VM_MAX_KERNEL_ADDRESS           ((vm_offset_t)0xFFFFC000)
+#if 0
+#define        KERNBASE                (VM_MIN_KERNEL_ADDRESS)
+#else
+#define        KERNBASE                
((vm_offset_t)(intptr_t)(int32_t)0x80000000)
+#endif
 
 /*
  * Disable superpage reservations. (not sure if this is right
@@ -175,23 +181,8 @@
  */
 #define        VM_NFREEORDER           9
 
-/*
- * XXXMIPS: This values need to be changed!!!
- */ 
-#if 0
-#define VM_MIN_ADDRESS         ((vm_offset_t)0x0000000000010000)
-#define VM_MAXUSER_ADDRESS     ((vm_offset_t)MIPS_KSEG0_START-1)
-#define VM_MAX_ADDRESS         ((vm_offset_t)0x0000000100000000)
-#define VM_MIN_KERNEL_ADDRESS  ((vm_offset_t)MIPS_KSEG3_START)
-#define VM_MAX_KERNEL_ADDRESS  ((vm_offset_t)MIPS_KSEG3_END)
-#define        KERNBASE                (VM_MIN_KERNEL_ADDRESS)
-
-/* virtual sizes (bytes) for various kernel submaps */
-#define        VM_KMEM_SIZE            (16*1024*1024)          /* XXX ??? */
-#endif
-
-#define NBSEG          0x400000        /* bytes/segment */
-#define SEGOFSET       (NBSEG-1)       /* byte offset into segment */
 #define SEGSHIFT       22              /* LOG2(NBSEG) */
+#define NBSEG          (1 << SEGSHIFT) /* bytes/segment */
+#define SEGOFSET       (NBSEG-1)       /* byte offset into segment */
 
 #endif /* !_MACHINE_VMPARAM_H_ */

Modified: head/sys/mips/mips/exception.S
==============================================================================
--- head/sys/mips/mips/exception.S      Sat Apr 17 04:54:38 2010        
(r206745)
+++ head/sys/mips/mips/exception.S      Sat Apr 17 07:20:01 2010        
(r206746)
@@ -158,7 +158,7 @@ MipsDoTLBMiss:
        lw      k1, 0(k1)                       #08: k1=seg entry
        mfc0    k0, COP_0_BAD_VADDR             #09: k0=bad address (again)
        beq     k1, zero, 2f                    #0a: ==0 -- no page table
-       srl     k0, PGSHIFT - 2                 #0b: k0=VPN (aka va>>10)
+       srl     k0, PAGE_SHIFT - 2                      #0b: k0=VPN (aka va>>10)
 
        andi    k0, k0, ((NPTEPG/2) - 1) << 3   #0c: k0=page tab offset
 #xxx mips64 unsafe?
@@ -860,7 +860,7 @@ NLEAF(MipsTLBInvalidException)
        nop
 
        mfc0    k0, COP_0_BAD_VADDR
-       srl     k0, PGSHIFT - 2
+       srl     k0, PAGE_SHIFT - 2
        andi    k0, 0xffc
        addu    k1, k1, k0
 
@@ -944,7 +944,7 @@ tlb_insert_random:
        sll     k1, k1, PAGE_SHIFT + 1
 
        PTR_LA  k0, _C_LABEL(pcpu_space)
-       addiu   k0, (NBPG * 2)
+       addiu   k0, (PAGE_SIZE * 2)
        addu    k0, k0, k1
 
        /*

Modified: head/sys/mips/mips/genassym.c
==============================================================================
--- head/sys/mips/mips/genassym.c       Sat Apr 17 04:54:38 2010        
(r206745)
+++ head/sys/mips/mips/genassym.c       Sat Apr 17 07:20:01 2010        
(r206746)
@@ -90,8 +90,7 @@ ASSYM(VM_MAXUSER_ADDRESS, VM_MAXUSER_ADD
 ASSYM(SIGF_UC, offsetof(struct sigframe, sf_uc));
 ASSYM(SIGFPE, SIGFPE);
 ASSYM(PAGE_SHIFT, PAGE_SHIFT);
-ASSYM(PGSHIFT, PGSHIFT);
-ASSYM(NBPG, NBPG);
+ASSYM(PAGE_SIZE, PAGE_SIZE);
 ASSYM(SEGSHIFT, SEGSHIFT);
 ASSYM(NPTEPG, NPTEPG);
 ASSYM(TDF_NEEDRESCHED, TDF_NEEDRESCHED);

Modified: head/sys/mips/mips/locore.S
==============================================================================
--- head/sys/mips/mips/locore.S Sat Apr 17 04:54:38 2010        (r206745)
+++ head/sys/mips/mips/locore.S Sat Apr 17 07:20:01 2010        (r206746)
@@ -178,7 +178,7 @@ VECTOR(_locore, unknown)
         * Initialize stack and call machine startup.
         */
        PTR_LA  sp, _C_LABEL(pcpu_space)
-       addiu   sp, (NBPG * 2) - CALLFRAME_SIZ
+       addiu   sp, (PAGE_SIZE * 2) - CALLFRAME_SIZ
 
        sw      zero, CALLFRAME_SIZ - 4(sp)     # Zero out old ra for debugger
        sw      zero, CALLFRAME_SIZ - 8(sp)     # Zero out old fp for debugger

Modified: head/sys/mips/mips/mpboot.S
==============================================================================
--- head/sys/mips/mips/mpboot.S Sat Apr 17 04:54:38 2010        (r206745)
+++ head/sys/mips/mips/mpboot.S Sat Apr 17 07:20:01 2010        (r206746)
@@ -66,7 +66,7 @@ GLOBAL(mpentry)
         * Initialize stack and call machine startup
         */
        PTR_LA  sp, _C_LABEL(pcpu_space)
-       addiu   sp, (NBPG * 2) - CALLFRAME_SIZ
+       addiu   sp, (PAGE_SIZE * 2) - CALLFRAME_SIZ
        sll     t0, s0, PAGE_SHIFT + 1
        addu    sp, sp, t0
 

Modified: head/sys/mips/mips/pmap.c
==============================================================================
--- head/sys/mips/mips/pmap.c   Sat Apr 17 04:54:38 2010        (r206745)
+++ head/sys/mips/mips/pmap.c   Sat Apr 17 07:20:01 2010        (r206746)
@@ -609,7 +609,7 @@ pmap_invalidate_page_action(void *arg)
                pmap->pm_asid[PCPU_GET(cpuid)].gen = 0;
                return;
        }
-       va = pmap_va_asid(pmap, (va & ~PGOFSET));
+       va = pmap_va_asid(pmap, (va & ~PAGE_MASK));
        mips_TBIS(va);
 }
 
@@ -765,7 +765,7 @@ pmap_kremove(vm_offset_t va)
        /*
         * Write back all caches from the page being destroyed
         */
-       mips_dcache_wbinv_range_index(va, NBPG);
+       mips_dcache_wbinv_range_index(va, PAGE_SIZE);
 
        pte = pmap_pte(kernel_pmap, va);
        *pte = PTE_G;
@@ -1516,7 +1516,7 @@ pmap_remove_page(struct pmap *pmap, vm_o
        /*
         * Write back all caches from the page being destroyed
         */
-       mips_dcache_wbinv_range_index(va, NBPG);
+       mips_dcache_wbinv_range_index(va, PAGE_SIZE);
 
        /*
         * get a local va for mappings for this pmap.
@@ -1603,7 +1603,7 @@ pmap_remove_all(vm_page_t m)
                 * the page being destroyed
                 */
                if (m->md.pv_list_count == 1) 
-                       mips_dcache_wbinv_range_index(pv->pv_va, NBPG);
+                       mips_dcache_wbinv_range_index(pv->pv_va, PAGE_SIZE);
 
                pv->pv_pmap->pm_stats.resident_count--;
 
@@ -1902,8 +1902,8 @@ validate:
         */
        if (!is_kernel_pmap(pmap) && (pmap == &curproc->p_vmspace->vm_pmap) &&
            (prot & VM_PROT_EXECUTE)) {
-               mips_icache_sync_range(va, NBPG);
-               mips_dcache_wbinv_range(va, NBPG);
+               mips_icache_sync_range(va, PAGE_SIZE);
+               mips_dcache_wbinv_range(va, PAGE_SIZE);
        }
        vm_page_unlock_queues();
        PMAP_UNLOCK(pmap);
@@ -2032,8 +2032,8 @@ pmap_enter_quick_locked(pmap_t pmap, vm_
                 * unresolvable TLB miss may occur. */
                if (pmap == &curproc->p_vmspace->vm_pmap) {
                        va &= ~PAGE_MASK;
-                       mips_icache_sync_range(va, NBPG);
-                       mips_dcache_wbinv_range(va, NBPG);
+                       mips_icache_sync_range(va, PAGE_SIZE);
+                       mips_dcache_wbinv_range(va, PAGE_SIZE);
                }
        }
        return (mpte);
@@ -3078,7 +3078,7 @@ pmap_flush_pvcache(vm_page_t m)
        if (m != NULL) {
                for (pv = TAILQ_FIRST(&m->md.pv_list); pv;
                    pv = TAILQ_NEXT(pv, pv_list)) {
-                       mips_dcache_wbinv_range_index(pv->pv_va, NBPG);
+                       mips_dcache_wbinv_range_index(pv->pv_va, PAGE_SIZE);
                }
        }
 }

Modified: head/sys/mips/mips/support.S
==============================================================================
--- head/sys/mips/mips/support.S        Sat Apr 17 04:54:38 2010        
(r206745)
+++ head/sys/mips/mips/support.S        Sat Apr 17 07:20:01 2010        
(r206746)
@@ -210,7 +210,7 @@ END(fillw)
  * mem_zero_page(addr);
  */
 LEAF(mem_zero_page)
-       li      v0, NBPG
+       li      v0, PAGE_SIZE
 1:
        subu    v0, 8
        sd      zero, 0(a0)

Modified: head/sys/mips/mips/tlb.S
==============================================================================
--- head/sys/mips/mips/tlb.S    Sat Apr 17 04:54:38 2010        (r206745)
+++ head/sys/mips/mips/tlb.S    Sat Apr 17 07:20:01 2010        (r206746)
@@ -240,7 +240,7 @@ LEAF(Mips_TLBFlush)
        # MIPS_KSEG0_START + 2 * i * PAGE_SIZE;
        # One bogus value for every TLB entry might cause MCHECK exception
        #
-       sll     t3, t1, PGSHIFT + 1
+       sll     t3, t1, PAGE_SHIFT + 1
        li      v0, MIPS_KSEG0_START            # invalid address
        addu    v0, t3
 /*
@@ -299,7 +299,7 @@ LEAF(Mips_TLBFlushAddr)
        # address calculated by following expression:
        # MIPS_KSEG0_START + 2 * i * PAGE_SIZE;
        # One bogus value for every TLB entry might cause MCHECK exception
-       sll     v0, PGSHIFT + 1
+       sll     v0, PAGE_SHIFT + 1
        addu    t1, v0
        _MTC0   t1, COP_0_TLB_HI                # Mark entry high as invalid
 
@@ -482,7 +482,7 @@ LEAF(mips_TBIAP)
        # MIPS_KSEG0_START + 2 * i * PAGE_SIZE;
        # One bogus value for every TLB entry might cause MCHECK exception
        #
-       sll     t3, t1, PGSHIFT + 1
+       sll     t3, t1, PAGE_SHIFT + 1
        li      v0, MIPS_KSEG0_START            # invalid address
        addu    v0, t3
 
@@ -507,7 +507,7 @@ LEAF(mips_TBIAP)
        tlbwi                                   # invalidate the TLB entry
 2:
        addu    t1, t1, 1
-       addu    v0, 1 << (PGSHIFT + 1)
+       addu    v0, 1 << (PAGE_SHIFT + 1)
        bne     t1, t2, 1b
        nop
 

Modified: head/sys/mips/mips/trap.c
==============================================================================
--- head/sys/mips/mips/trap.c   Sat Apr 17 04:54:38 2010        (r206745)
+++ head/sys/mips/mips/trap.c   Sat Apr 17 07:20:01 2010        (r206746)
@@ -378,12 +378,12 @@ trap(struct trapframe *trapframe)
                        if (!(pte = pmap_segmap(kernel_pmap,
                            trapframe->badvaddr)))
                                panic("trap: ktlbmod: invalid segmap");
-                       pte += (trapframe->badvaddr >> PGSHIFT) & (NPTEPG - 1);
+                       pte += (trapframe->badvaddr >> PAGE_SHIFT) & (NPTEPG - 
1);
                        entry = *pte;
 #ifdef SMP
                        /* It is possible that some other CPU changed m-bit */
                        if (!mips_pg_v(entry) || (entry & mips_pg_m_bit())) {
-                               trapframe->badvaddr &= ~PGOFSET;
+                               trapframe->badvaddr &= ~PAGE_MASK;
                                pmap_update_page(kernel_pmap,
                                    trapframe->badvaddr, entry);
                                PMAP_UNLOCK(kernel_pmap);
@@ -401,7 +401,7 @@ trap(struct trapframe *trapframe)
                        }
                        entry |= mips_pg_m_bit();
                        *pte = entry;
-                       trapframe->badvaddr &= ~PGOFSET;
+                       trapframe->badvaddr &= ~PAGE_MASK;
                        pmap_update_page(kernel_pmap, trapframe->badvaddr, 
entry);
                        pa = mips_tlbpfn_to_paddr(entry);
                        if (!page_is_managed(pa))
@@ -421,12 +421,12 @@ trap(struct trapframe *trapframe)
                        PMAP_LOCK(pmap);
                        if (!(pte = pmap_segmap(pmap, trapframe->badvaddr)))
                                panic("trap: utlbmod: invalid segmap");
-                       pte += (trapframe->badvaddr >> PGSHIFT) & (NPTEPG - 1);
+                       pte += (trapframe->badvaddr >> PAGE_SHIFT) & (NPTEPG - 
1);
                        entry = *pte;
 #ifdef SMP
                        /* It is possible that some other CPU changed m-bit */
                        if (!mips_pg_v(entry) || (entry & mips_pg_m_bit())) {
-                               trapframe->badvaddr = (trapframe->badvaddr & 
~PGOFSET);
+                               trapframe->badvaddr = (trapframe->badvaddr & 
~PAGE_MASK);
                                pmap_update_page(pmap, trapframe->badvaddr, 
entry);
                                PMAP_UNLOCK(pmap);
                                goto out;
@@ -445,7 +445,7 @@ trap(struct trapframe *trapframe)
                        }
                        entry |= mips_pg_m_bit();
                        *pte = entry;
-                       trapframe->badvaddr = (trapframe->badvaddr & ~PGOFSET);
+                       trapframe->badvaddr = (trapframe->badvaddr & 
~PAGE_MASK);
                        pmap_update_page(pmap, trapframe->badvaddr, entry);
                        trapframe->badvaddr |= 
(pmap->pm_asid[PCPU_GET(cpuid)].asid << VMTLB_PID_SHIFT);
                        pa = mips_tlbpfn_to_paddr(entry);

Modified: head/sys/mips/mips/vm_machdep.c
==============================================================================
--- head/sys/mips/mips/vm_machdep.c     Sat Apr 17 04:54:38 2010        
(r206745)
+++ head/sys/mips/mips/vm_machdep.c     Sat Apr 17 07:20:01 2010        
(r206746)
@@ -219,7 +219,7 @@ cpu_thread_swapin(struct thread *td)
         */
        if (!(pte = pmap_segmap(kernel_pmap, td->td_md.md_realstack)))
                panic("cpu_thread_swapin: invalid segmap");
-       pte += ((vm_offset_t)td->td_md.md_realstack >> PGSHIFT) & (NPTEPG - 1);
+       pte += ((vm_offset_t)td->td_md.md_realstack >> PAGE_SHIFT) & (NPTEPG - 
1);
 
        for (i = 0; i < KSTACK_PAGES - 1; i++) {
                td->td_md.md_upte[i] = *pte & ~(PTE_RO|PTE_WIRED);
@@ -249,7 +249,7 @@ cpu_thread_alloc(struct thread *td)
 
        if (!(pte = pmap_segmap(kernel_pmap, td->td_md.md_realstack)))
                panic("cpu_thread_alloc: invalid segmap");
-       pte += ((vm_offset_t)td->td_md.md_realstack >> PGSHIFT) & (NPTEPG - 1);
+       pte += ((vm_offset_t)td->td_md.md_realstack >> PAGE_SHIFT) & (NPTEPG - 
1);
 
        for (i = 0; i < KSTACK_PAGES - 1; i++) {
                td->td_md.md_upte[i] = *pte & ~(PTE_RO|PTE_WIRED);
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to