From 38aca37c00548f9b31bf17e74ab4a36c73521782 Mon Sep 17 00:00:00 2001 From: Richard Braun Date: Tue, 20 Sep 2016 22:11:24 +0200 Subject: Replace vm_offset_t with phys_addr_t where appropriate * i386/i386/phys.c (pmap_zero_page, pmap_copy_page, copy_to_phys, copy_from_phys, kvtophys): Use the phys_addr_t type for physical addresses. * i386/intel/pmap.c (pmap_map, pmap_map_bd, pmap_destroy, pmap_remove_range, pmap_page_protect, pmap_enter, pmap_extract, pmap_collect, phys_attribute_clear, phys_attribute_test, pmap_clear_modify, pmap_is_modified, pmap_clear_reference, pmap_is_referenced): Likewise. * i386/intel/pmap.h (pt_entry_t): Unconditionally define as a phys_addr_t. (pmap_zero_page, pmap_copy_page, kvtophys): Use the phys_addr_t type for physical addresses. * vm/pmap.h (pmap_enter, pmap_page_protect, pmap_clear_reference, pmap_is_referenced, pmap_clear_modify, pmap_is_modified, pmap_extract, pmap_map_bd): Likewise. * vm/vm_page.h (vm_page_fictitious_addr): Declare as a phys_addr_t. * vm/vm_resident.c (vm_page_fictitious_addr): Likewise. (vm_page_grab_phys_addr): Change return type to phys_addr_t. --- i386/i386/phys.c | 12 ++++++------ i386/intel/pmap.c | 40 ++++++++++++++++++++-------------------- i386/intel/pmap.h | 12 ++++-------- vm/pmap.h | 18 +++++++++--------- vm/vm_page.h | 2 +- vm/vm_resident.c | 4 ++-- 6 files changed, 42 insertions(+), 46 deletions(-) diff --git a/i386/i386/phys.c b/i386/i386/phys.c index fadc5c37..a5c3a15c 100644 --- a/i386/i386/phys.c +++ b/i386/i386/phys.c @@ -47,7 +47,7 @@ * pmap_zero_page zeros the specified (machine independent) page. */ void -pmap_zero_page(vm_offset_t p) +pmap_zero_page(phys_addr_t p) { assert(p != vm_page_fictitious_addr); vm_offset_t v; @@ -73,8 +73,8 @@ pmap_zero_page(vm_offset_t p) */ void pmap_copy_page( - vm_offset_t src, - vm_offset_t dst) + phys_addr_t src, + phys_addr_t dst) { vm_offset_t src_addr_v, dst_addr_v; pmap_mapwindow_t *src_map = NULL; @@ -116,7 +116,7 @@ pmap_copy_page( void copy_to_phys( vm_offset_t src_addr_v, - vm_offset_t dst_addr_p, + phys_addr_t dst_addr_p, int count) { vm_offset_t dst_addr_v; @@ -147,7 +147,7 @@ copy_to_phys( */ void copy_from_phys( - vm_offset_t src_addr_p, + phys_addr_t src_addr_p, vm_offset_t dst_addr_v, int count) { @@ -176,7 +176,7 @@ copy_from_phys( * * Convert a kernel virtual address to a physical address */ -vm_offset_t +phys_addr_t kvtophys(vm_offset_t addr) { pt_entry_t *pte; diff --git a/i386/intel/pmap.c b/i386/intel/pmap.c index 7cde0931..bfc5d76e 100644 --- a/i386/intel/pmap.c +++ b/i386/intel/pmap.c @@ -483,8 +483,8 @@ void ptep_check(ptep_t ptep) */ vm_offset_t pmap_map( vm_offset_t virt, - vm_offset_t start, - vm_offset_t end, + phys_addr_t start, + phys_addr_t end, int prot) { int ps; @@ -506,8 +506,8 @@ vm_offset_t pmap_map( */ vm_offset_t pmap_map_bd( vm_offset_t virt, - vm_offset_t start, - vm_offset_t end, + phys_addr_t start, + phys_addr_t end, vm_prot_t prot) { pt_entry_t template; @@ -1214,7 +1214,7 @@ pmap_t pmap_create(vm_size_t size) void pmap_destroy(pmap_t p) { pt_entry_t *pdep; - vm_offset_t pa; + phys_addr_t pa; int c, s; vm_page_t m; @@ -1311,7 +1311,7 @@ void pmap_remove_range( pt_entry_t *cpte; unsigned long num_removed, num_unwired; unsigned long pai; - vm_offset_t pa; + phys_addr_t pa; #ifdef MACH_PV_PAGETABLES int n, ii = 0; struct mmu_update update[HYP_BATCH_MMU_UPDATES]; @@ -1501,7 +1501,7 @@ void pmap_remove( * page. */ void pmap_page_protect( - vm_offset_t phys, + phys_addr_t phys, vm_prot_t prot) { pv_entry_t pv_h, prev; @@ -1773,7 +1773,7 @@ void pmap_protect( void pmap_enter( pmap_t pmap, vm_offset_t v, - vm_offset_t pa, + phys_addr_t pa, vm_prot_t prot, boolean_t wired) { @@ -1784,7 +1784,7 @@ void pmap_enter( pv_entry_t pv_e; pt_entry_t template; int spl; - vm_offset_t old_pa; + phys_addr_t old_pa; assert(pa != vm_page_fictitious_addr); if (pmap_debug) printf("pmap(%lx, %lx)\n", v, pa); @@ -2133,20 +2133,20 @@ void pmap_change_wiring( * with the given map/virtual_address pair. */ -vm_offset_t pmap_extract( +phys_addr_t pmap_extract( pmap_t pmap, vm_offset_t va) { pt_entry_t *pte; - vm_offset_t pa; + phys_addr_t pa; int spl; SPLVM(spl); simple_lock(&pmap->lock); if ((pte = pmap_pte(pmap, va)) == PT_ENTRY_NULL) - pa = (vm_offset_t) 0; + pa = 0; else if (!(*pte & INTEL_PTE_VALID)) - pa = (vm_offset_t) 0; + pa = 0; else pa = pte_to_pa(*pte) + (va & INTEL_OFFMASK); simple_unlock(&pmap->lock); @@ -2187,7 +2187,7 @@ void pmap_collect(pmap_t p) { pt_entry_t *pdp, *ptp; pt_entry_t *eptp; - vm_offset_t pa; + phys_addr_t pa; int spl, wired; if (p == PMAP_NULL) @@ -2403,7 +2403,7 @@ pmap_pageable( */ void phys_attribute_clear( - vm_offset_t phys, + phys_addr_t phys, int bits) { pv_entry_t pv_h; @@ -2487,7 +2487,7 @@ phys_attribute_clear( */ boolean_t phys_attribute_test( - vm_offset_t phys, + phys_addr_t phys, int bits) { pv_entry_t pv_h; @@ -2575,7 +2575,7 @@ phys_attribute_test( * Clear the modify bits on the specified physical page. */ -void pmap_clear_modify(vm_offset_t phys) +void pmap_clear_modify(phys_addr_t phys) { phys_attribute_clear(phys, PHYS_MODIFIED); } @@ -2587,7 +2587,7 @@ void pmap_clear_modify(vm_offset_t phys) * by any physical maps. */ -boolean_t pmap_is_modified(vm_offset_t phys) +boolean_t pmap_is_modified(phys_addr_t phys) { return (phys_attribute_test(phys, PHYS_MODIFIED)); } @@ -2598,7 +2598,7 @@ boolean_t pmap_is_modified(vm_offset_t phys) * Clear the reference bit on the specified physical page. */ -void pmap_clear_reference(vm_offset_t phys) +void pmap_clear_reference(phys_addr_t phys) { phys_attribute_clear(phys, PHYS_REFERENCED); } @@ -2610,7 +2610,7 @@ void pmap_clear_reference(vm_offset_t phys) * by any physical maps. */ -boolean_t pmap_is_referenced(vm_offset_t phys) +boolean_t pmap_is_referenced(phys_addr_t phys) { return (phys_attribute_test(phys, PHYS_REFERENCED)); } diff --git a/i386/intel/pmap.h b/i386/intel/pmap.h index 382cd5f4..e6a3ede8 100644 --- a/i386/intel/pmap.h +++ b/i386/intel/pmap.h @@ -64,11 +64,7 @@ * i386/i486 Page Table Entry */ -#if PAE -typedef unsigned long long pt_entry_t; -#else /* PAE */ -typedef unsigned int pt_entry_t; -#endif /* PAE */ +typedef phys_addr_t pt_entry_t; #define PT_ENTRY_NULL ((pt_entry_t *) 0) #endif /* __ASSEMBLER__ */ @@ -447,19 +443,19 @@ extern void pmap_unmap_page_zero (void); /* * pmap_zero_page zeros the specified (machine independent) page. */ -extern void pmap_zero_page (vm_offset_t); +extern void pmap_zero_page (phys_addr_t); /* * pmap_copy_page copies the specified (machine independent) pages. */ -extern void pmap_copy_page (vm_offset_t, vm_offset_t); +extern void pmap_copy_page (phys_addr_t, phys_addr_t); /* * kvtophys(addr) * * Convert a kernel virtual address to a physical address */ -extern vm_offset_t kvtophys (vm_offset_t); +extern phys_addr_t kvtophys (vm_offset_t); void pmap_remove_range( pmap_t pmap, diff --git a/vm/pmap.h b/vm/pmap.h index 3c1cdcb1..2201b444 100644 --- a/vm/pmap.h +++ b/vm/pmap.h @@ -100,7 +100,7 @@ extern void pmap_reference(pmap_t pmap); extern void pmap_destroy(pmap_t pmap); /* Enter a mapping */ -extern void pmap_enter(pmap_t pmap, vm_offset_t va, vm_offset_t pa, +extern void pmap_enter(pmap_t pmap, vm_offset_t va, phys_addr_t pa, vm_prot_t prot, boolean_t wired); @@ -128,7 +128,7 @@ extern void pmap_deactivate(pmap_t, thread_t, int); */ /* Restrict access to page. */ -void pmap_page_protect(vm_offset_t pa, vm_prot_t prot); +void pmap_page_protect(phys_addr_t pa, vm_prot_t prot); /* * Routines to manage reference/modify bits based on @@ -137,24 +137,24 @@ void pmap_page_protect(vm_offset_t pa, vm_prot_t prot); */ /* Clear reference bit */ -void pmap_clear_reference(vm_offset_t pa); +void pmap_clear_reference(phys_addr_t pa); /* Return reference bit */ #ifndef pmap_is_referenced -boolean_t pmap_is_referenced(vm_offset_t pa); +boolean_t pmap_is_referenced(phys_addr_t pa); #endif /* pmap_is_referenced */ /* Clear modify bit */ -void pmap_clear_modify(vm_offset_t pa); +void pmap_clear_modify(phys_addr_t pa); /* Return modify bit */ -boolean_t pmap_is_modified(vm_offset_t pa); +boolean_t pmap_is_modified(phys_addr_t pa); /* * Sundry required routines */ /* Return a virtual-to-physical mapping, if possible. */ -extern vm_offset_t pmap_extract(pmap_t, vm_offset_t); +extern phys_addr_t pmap_extract(pmap_t, vm_offset_t); /* Perform garbage collection, if any. */ extern void pmap_collect(pmap_t); /* Specify pageability. */ @@ -198,8 +198,8 @@ extern void pmap_pageable( */ extern vm_offset_t pmap_map_bd( vm_offset_t virt, - vm_offset_t start, - vm_offset_t end, + phys_addr_t start, + phys_addr_t end, vm_prot_t prot); /* diff --git a/vm/vm_page.h b/vm/vm_page.h index ba54b3ab..3a1452a7 100644 --- a/vm/vm_page.h +++ b/vm/vm_page.h @@ -200,7 +200,7 @@ decl_simple_lock_data(extern,vm_page_queue_free_lock) extern unsigned int vm_page_free_wanted; /* how many threads are waiting for memory */ -extern vm_offset_t vm_page_fictitious_addr; +extern phys_addr_t vm_page_fictitious_addr; /* (fake) phys_addr of fictitious pages */ extern void vm_page_bootstrap( diff --git a/vm/vm_resident.c b/vm/vm_resident.c index 3dff11bf..fdd25912 100644 --- a/vm/vm_resident.c +++ b/vm/vm_resident.c @@ -127,7 +127,7 @@ struct kmem_cache vm_page_cache; * For debugging, this should be a strange value * that the pmap module can recognize in assertions. */ -vm_offset_t vm_page_fictitious_addr = (vm_offset_t) -1; +phys_addr_t vm_page_fictitious_addr = (phys_addr_t) -1; /* * Resident page structures are also chained on @@ -820,7 +820,7 @@ vm_page_t vm_page_grab( return mem; } -vm_offset_t vm_page_grab_phys_addr(void) +phys_addr_t vm_page_grab_phys_addr(void) { vm_page_t p = vm_page_grab(FALSE); if (p == VM_PAGE_NULL) -- cgit v1.2.3