From owner-svn-src-user@FreeBSD.ORG Wed Apr 14 05:21:29 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1D53F1065670; Wed, 14 Apr 2010 05:21:29 +0000 (UTC) (envelope-from jmallett@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 0A6838FC17; Wed, 14 Apr 2010 05:21:29 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o3E5LStG075393; Wed, 14 Apr 2010 05:21:28 GMT (envelope-from jmallett@svn.freebsd.org) Received: (from jmallett@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o3E5LS85075388; Wed, 14 Apr 2010 05:21:28 GMT (envelope-from jmallett@svn.freebsd.org) Message-Id: <201004140521.o3E5LS85075388@svn.freebsd.org> From: Juli Mallett Date: Wed, 14 Apr 2010 05:21:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r206588 - in user/jmallett/octeon/sys/mips: include mips X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Apr 2010 05:21:29 -0000 Author: jmallett Date: Wed Apr 14 05:21:28 2010 New Revision: 206588 URL: http://svn.freebsd.org/changeset/base/206588 Log: Use pmap_pte to look up PTEs outside of pmap.c rather than using pmap_segmap. Modified: user/jmallett/octeon/sys/mips/include/pte.h user/jmallett/octeon/sys/mips/mips/pmap.c user/jmallett/octeon/sys/mips/mips/trap.c user/jmallett/octeon/sys/mips/mips/vm_machdep.c Modified: user/jmallett/octeon/sys/mips/include/pte.h ============================================================================== --- user/jmallett/octeon/sys/mips/include/pte.h Wed Apr 14 04:10:13 2010 (r206587) +++ user/jmallett/octeon/sys/mips/include/pte.h Wed Apr 14 05:21:28 2010 (r206588) @@ -38,12 +38,6 @@ typedef pt_entry_t *pd_entry_t; #endif /* - * Given a virtual address, get the offset of its PTE within its page - * directory page. - */ -#define PDE_OFFSET(va) (((vm_offset_t)(va) >> PAGE_SHIFT) & (NPTEPG - 1)) - -/* * TLB and PTE management. Most things operate within the context of * EntryLo0,1, and begin with TLBLO_. Things which work with EntryHi * start with TLBHI_. PTE bits begin with PG_. Modified: user/jmallett/octeon/sys/mips/mips/pmap.c ============================================================================== --- user/jmallett/octeon/sys/mips/mips/pmap.c Wed Apr 14 04:10:13 2010 (r206587) +++ user/jmallett/octeon/sys/mips/mips/pmap.c Wed Apr 14 05:21:28 2010 (r206588) @@ -136,6 +136,12 @@ __FBSDID("$FreeBSD$"); #define mips_segtrunc(va) ((va) & ~SEGOFSET) #define is_kernel_pmap(x) ((x) == kernel_pmap) +/* + * Given a virtual address, get the offset of its PTE within its page + * directory page. + */ +#define PDE_OFFSET(va) (((vm_offset_t)(va) >> PAGE_SHIFT) & (NPTEPG - 1)) + struct pmap kernel_pmap_store; pd_entry_t *kernel_segmap; Modified: user/jmallett/octeon/sys/mips/mips/trap.c ============================================================================== --- user/jmallett/octeon/sys/mips/mips/trap.c Wed Apr 14 04:10:13 2010 (r206587) +++ user/jmallett/octeon/sys/mips/mips/trap.c Wed Apr 14 05:21:28 2010 (r206588) @@ -374,10 +374,9 @@ trap(struct trapframe *trapframe) vm_offset_t pa; PMAP_LOCK(kernel_pmap); - if (!(pte = pmap_segmap(kernel_pmap, - trapframe->badvaddr))) - panic("trap: ktlbmod: invalid segmap"); - pte += PDE_OFFSET(trapframe->badvaddr); + pte = pmap_pte(kernel_pmap, trapframe->badvaddr); + if (pte == NULL) + panic("trap: ktlbmod: can't find PTE"); #ifdef SMP /* It is possible that some other CPU changed m-bit */ if (!pte_test(pte, PG_V) || pte_test(pte, PG_D)) { @@ -414,9 +413,9 @@ trap(struct trapframe *trapframe) pmap = &p->p_vmspace->vm_pmap; PMAP_LOCK(pmap); - if (!(pte = pmap_segmap(pmap, trapframe->badvaddr))) - panic("trap: utlbmod: invalid segmap"); - pte += PDE_OFFSET(trapframe->badvaddr); + pte = pmap_pte(pmap, trapframe->badvaddr); + if (pte == NULL) + panic("trap: utlbmod: can't find PTE"); #ifdef SMP /* It is possible that some other CPU changed m-bit */ if (!pte_test(pte, PG_V) || pte_test(pte, PG_D)) { Modified: user/jmallett/octeon/sys/mips/mips/vm_machdep.c ============================================================================== --- user/jmallett/octeon/sys/mips/mips/vm_machdep.c Wed Apr 14 04:10:13 2010 (r206587) +++ user/jmallett/octeon/sys/mips/mips/vm_machdep.c Wed Apr 14 05:21:28 2010 (r206588) @@ -225,13 +225,9 @@ cpu_thread_swapin(struct thread *td) * part of the thread struct so cpu_switch() can quickly map in * the pcb struct and kernel stack. */ - if (!(pte = pmap_segmap(kernel_pmap, td->td_kstack))) - panic("cpu_thread_swapin: invalid segmap"); - pte += PDE_OFFSET(td->td_kstack); - for (i = 0; i < KSTACK_PAGES; i++) { + pte = pmap_pte(kernel_pmap, td->td_kstack + i * PAGE_SIZE); td->td_md.md_upte[i] = *pte & ~TLBLO_SWBITS_MASK; - pte++; } } @@ -250,13 +246,9 @@ cpu_thread_alloc(struct thread *td) td->td_kstack_pages * PAGE_SIZE) - 1; td->td_frame = &td->td_pcb->pcb_regs; - if (!(pte = pmap_segmap(kernel_pmap, td->td_kstack))) - panic("cpu_thread_alloc: invalid segmap"); - pte += PDE_OFFSET(td->td_kstack); - for (i = 0; i < KSTACK_PAGES; i++) { + pte = pmap_pte(kernel_pmap, td->td_kstack + i * PAGE_SIZE); td->td_md.md_upte[i] = *pte & ~TLBLO_SWBITS_MASK; - pte++; } }