diff options
Diffstat (limited to 'sys/arch/sparc')
-rw-r--r-- | sys/arch/sparc/include/pmap.h | 6 | ||||
-rw-r--r-- | sys/arch/sparc/sparc/pmap.c | 38 | ||||
-rw-r--r-- | sys/arch/sparc/sparc/vm_machdep.c | 4 |
3 files changed, 26 insertions, 22 deletions
diff --git a/sys/arch/sparc/include/pmap.h b/sys/arch/sparc/include/pmap.h index 7d55872bbe5..d5d2d2fa7fa 100644 --- a/sys/arch/sparc/include/pmap.h +++ b/sys/arch/sparc/include/pmap.h @@ -1,4 +1,4 @@ -/* $OpenBSD: pmap.h,v 1.18 2001/06/08 08:09:26 art Exp $ */ +/* $OpenBSD: pmap.h,v 1.19 2001/06/10 01:45:03 deraadt Exp $ */ /* $NetBSD: pmap.h,v 1.30 1997/08/04 20:00:47 pk Exp $ */ /* @@ -326,7 +326,7 @@ void pmap_clear_reference4_4c __P((paddr_t pa)); void pmap_copy_page4_4c __P((paddr_t, paddr_t)); void pmap_enter4_4c __P((pmap_t, vaddr_t, paddr_t, vm_prot_t, boolean_t, vm_prot_t)); -paddr_t pmap_extract4_4c __P((pmap_t, vaddr_t)); +boolean_t pmap_extract4_4c __P((pmap_t, vaddr_t, paddr_t *)); #ifdef PMAP_NEW boolean_t pmap_is_modified4_4c __P((struct vm_page *)); boolean_t pmap_is_referenced4_4c __P((struct vm_page *)); @@ -357,7 +357,7 @@ void pmap_clear_reference4m __P((paddr_t pa)); void pmap_copy_page4m __P((paddr_t, paddr_t)); void pmap_enter4m __P((pmap_t, vaddr_t, paddr_t, vm_prot_t, boolean_t, vm_prot_t)); -paddr_t pmap_extract4m __P((pmap_t, vaddr_t)); +boolean_t pmap_extract4m __P((pmap_t, vaddr_t, paddr_t *)); #ifdef PMAP_NEW boolean_t pmap_is_modified4m __P((struct vm_page *)); boolean_t pmap_is_referenced4m __P((struct vm_page *)); diff --git a/sys/arch/sparc/sparc/pmap.c b/sys/arch/sparc/sparc/pmap.c index 13bf7149a81..e03b3e30e27 100644 --- a/sys/arch/sparc/sparc/pmap.c +++ b/sys/arch/sparc/sparc/pmap.c @@ -1,4 +1,4 @@ -/* $OpenBSD: pmap.c,v 1.85 2001/05/10 12:52:35 art Exp $ */ +/* $OpenBSD: pmap.c,v 1.86 2001/06/10 01:45:04 deraadt Exp $ */ /* $NetBSD: pmap.c,v 1.118 1998/05/19 19:00:18 thorpej Exp $ */ /* @@ -545,7 +545,7 @@ void (*pmap_clear_reference_p) __P((paddr_t pa)); void (*pmap_copy_page_p) __P((paddr_t, paddr_t)); void (*pmap_enter_p) __P((pmap_t, vaddr_t, paddr_t, vm_prot_t, boolean_t, vm_prot_t)); -paddr_t (*pmap_extract_p) __P((pmap_t, vaddr_t)); +boolean_t (*pmap_extract_p) __P((pmap_t, vaddr_t, paddr_t *)); #ifdef PMAP_NEW boolean_t (*pmap_is_modified_p) __P((struct vm_page *)); boolean_t (*pmap_is_referenced_p) __P((struct vm_page *)); @@ -5704,10 +5704,11 @@ pmap_unwire(pm, va) */ #if defined(SUN4) || defined(SUN4C) -paddr_t -pmap_extract4_4c(pm, va) +boolean_t +pmap_extract4_4c(pm, va, pa) struct pmap *pm; vaddr_t va; + paddr_t *pa; { int tpte; int vr, vs; @@ -5719,7 +5720,7 @@ pmap_extract4_4c(pm, va) if (pmapdebug & PDB_FOLLOW) printf("pmap_extract: null pmap\n"); #endif - return (0); + return (FALSE); } vr = VA_VREG(va); vs = VA_VSEG(va); @@ -5729,7 +5730,7 @@ pmap_extract4_4c(pm, va) if (pmapdebug & PDB_FOLLOW) printf("pmap_extract: invalid segment (%d)\n", vr); #endif - return (0); + return (FALSE); } sp = &rp->rg_segmap[vs]; @@ -5755,7 +5756,7 @@ pmap_extract4_4c(pm, va) if (pmapdebug & PDB_FOLLOW) printf("pmap_extract: invalid segment\n"); #endif - return (0); + return (FALSE); } tpte = pte[VA_VPG(va)]; } @@ -5764,11 +5765,12 @@ pmap_extract4_4c(pm, va) if (pmapdebug & PDB_FOLLOW) printf("pmap_extract: invalid pte\n"); #endif - return (0); + return (FALSE); } tpte &= PG_PFNUM; tpte = tpte; - return ((tpte << PGSHIFT) | (va & PGOFSET)); + *pa = ((tpte << PGSHIFT) | (va & PGOFSET)); + return (TRUE); } #endif /*4,4c*/ @@ -5778,10 +5780,11 @@ pmap_extract4_4c(pm, va) * with the given map/virtual_address pair. * GRR, the vm code knows; we should not have to do this! */ -paddr_t -pmap_extract4m(pm, va) +boolean_t +pmap_extract4m(pm, va, pa) struct pmap *pm; vaddr_t va; + paddr_t *pa; { struct regmap *rm; struct segmap *sm; @@ -5792,7 +5795,7 @@ pmap_extract4m(pm, va) if (pmapdebug & PDB_FOLLOW) printf("pmap_extract: null pmap\n"); #endif - return (0); + return (FALSE); } if ((rm = pm->pm_regmap) == NULL) { @@ -5800,7 +5803,7 @@ pmap_extract4m(pm, va) if (pmapdebug & PDB_FOLLOW) printf("pmap_extract: no regmap entry"); #endif - return (0); + return (FALSE); } rm += VA_VREG(va); @@ -5809,7 +5812,7 @@ pmap_extract4m(pm, va) if (pmapdebug & PDB_FOLLOW) printf("pmap_extract: no segmap"); #endif - return (0); + return (FALSE); } sm += VA_VSEG(va); @@ -5818,7 +5821,7 @@ pmap_extract4m(pm, va) if (pmapdebug & PDB_FOLLOW) panic("pmap_extract: no ptes"); #endif - return 0; + return FALSE; } pte = sm->sg_pte[VA_SUN4M_VPG(va)]; @@ -5828,10 +5831,11 @@ pmap_extract4m(pm, va) printf("pmap_extract: invalid pte of type %d\n", pte & SRMMU_TETYPE); #endif - return (0); + return (FALSE); } - return (ptoa((pte & SRMMU_PPNMASK) >> SRMMU_PPNSHIFT) | VA_OFF(va)); + *pa = (ptoa((pte & SRMMU_PPNMASK) >> SRMMU_PPNSHIFT) | VA_OFF(va)); + return (TRUE); } #endif /* sun4m */ diff --git a/sys/arch/sparc/sparc/vm_machdep.c b/sys/arch/sparc/sparc/vm_machdep.c index 4bfe64e8f0d..433b47fdbaf 100644 --- a/sys/arch/sparc/sparc/vm_machdep.c +++ b/sys/arch/sparc/sparc/vm_machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: vm_machdep.c,v 1.26 2001/06/08 08:09:28 art Exp $ */ +/* $OpenBSD: vm_machdep.c,v 1.27 2001/06/10 01:45:04 deraadt Exp $ */ /* $NetBSD: vm_machdep.c,v 1.30 1997/03/10 23:55:40 pk Exp $ */ /* @@ -79,7 +79,7 @@ pagemove(from, to, size) register caddr_t from, to; size_t size; { - register paddr_t pa; + paddr_t pa; #ifdef DEBUG if ((size & PAGE_MASK) != 0 || |