pmap.h (295158) | pmap.h (297446) |
---|---|
1/*- 2 * Copyright (c) 1991 Regents of the University of California. 3 * All rights reserved. 4 * 5 * This code is derived from software contributed to Berkeley by 6 * the Systems Programming Group of the University of Utah Computer 7 * Science Department and William Jolitz of UUNET Technologies Inc. 8 * --- 16 unchanged lines hidden (view full) --- 25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31 * SUCH DAMAGE. 32 * | 1/*- 2 * Copyright (c) 1991 Regents of the University of California. 3 * All rights reserved. 4 * 5 * This code is derived from software contributed to Berkeley by 6 * the Systems Programming Group of the University of Utah Computer 7 * Science Department and William Jolitz of UUNET Technologies Inc. 8 * --- 16 unchanged lines hidden (view full) --- 25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31 * SUCH DAMAGE. 32 * |
33 * $FreeBSD: head/sys/arm64/include/pmap.h 295158 2016-02-02 17:59:43Z andrew $ | 33 * $FreeBSD: head/sys/arm64/include/pmap.h 297446 2016-03-31 11:07:24Z andrew $ |
34 */ 35 36#ifndef _MACHINE_PMAP_H_ 37#define _MACHINE_PMAP_H_ 38 39#include <machine/pte.h> 40 41#ifndef LOCORE --- 31 unchanged lines hidden (view full) --- 73 vm_offset_t pv_va; 74 vm_paddr_t pv_pa; 75}; 76 77 78struct pmap { 79 struct mtx pm_mtx; 80 struct pmap_statistics pm_stats; /* pmap statictics */ | 34 */ 35 36#ifndef _MACHINE_PMAP_H_ 37#define _MACHINE_PMAP_H_ 38 39#include <machine/pte.h> 40 41#ifndef LOCORE --- 31 unchanged lines hidden (view full) --- 73 vm_offset_t pv_va; 74 vm_paddr_t pv_pa; 75}; 76 77 78struct pmap { 79 struct mtx pm_mtx; 80 struct pmap_statistics pm_stats; /* pmap statictics */ |
81 pd_entry_t *pm_l1; | 81 pd_entry_t *pm_l0; |
82 TAILQ_HEAD(,pv_chunk) pm_pvchunk; /* list of mappings in pmap */ 83}; 84 85typedef struct pv_entry { 86 vm_offset_t pv_va; /* virtual address for mapping */ 87 TAILQ_ENTRY(pv_entry) pv_next; 88} *pv_entry_t; 89 --- 39 unchanged lines hidden (view full) --- 129 130/* 131 * Macros to test if a mapping is mappable with an L1 Section mapping 132 * or an L2 Large Page mapping. 133 */ 134#define L1_MAPPABLE_P(va, pa, size) \ 135 ((((va) | (pa)) & L1_OFFSET) == 0 && (size) >= L1_SIZE) 136 | 82 TAILQ_HEAD(,pv_chunk) pm_pvchunk; /* list of mappings in pmap */ 83}; 84 85typedef struct pv_entry { 86 vm_offset_t pv_va; /* virtual address for mapping */ 87 TAILQ_ENTRY(pv_entry) pv_next; 88} *pv_entry_t; 89 --- 39 unchanged lines hidden (view full) --- 129 130/* 131 * Macros to test if a mapping is mappable with an L1 Section mapping 132 * or an L2 Large Page mapping. 133 */ 134#define L1_MAPPABLE_P(va, pa, size) \ 135 ((((va) | (pa)) & L1_OFFSET) == 0 && (size) >= L1_SIZE) 136 |
137void pmap_bootstrap(vm_offset_t, vm_paddr_t, vm_size_t); | 137void pmap_bootstrap(vm_offset_t, vm_offset_t, vm_paddr_t, vm_size_t); |
138void pmap_kenter_device(vm_offset_t, vm_size_t, vm_paddr_t); 139vm_paddr_t pmap_kextract(vm_offset_t va); 140void pmap_kremove(vm_offset_t); 141void pmap_kremove_device(vm_offset_t, vm_size_t); 142 143void *pmap_mapdev(vm_offset_t, vm_size_t); 144void *pmap_mapbios(vm_paddr_t, vm_size_t); 145void pmap_unmapdev(vm_offset_t, vm_size_t); 146void pmap_unmapbios(vm_offset_t, vm_size_t); 147 148boolean_t pmap_map_io_transient(vm_page_t *, vm_offset_t *, int, boolean_t); 149void pmap_unmap_io_transient(vm_page_t *, vm_offset_t *, int, boolean_t); 150 151bool pmap_get_tables(pmap_t, vm_offset_t, pd_entry_t **, pd_entry_t **, | 138void pmap_kenter_device(vm_offset_t, vm_size_t, vm_paddr_t); 139vm_paddr_t pmap_kextract(vm_offset_t va); 140void pmap_kremove(vm_offset_t); 141void pmap_kremove_device(vm_offset_t, vm_size_t); 142 143void *pmap_mapdev(vm_offset_t, vm_size_t); 144void *pmap_mapbios(vm_paddr_t, vm_size_t); 145void pmap_unmapdev(vm_offset_t, vm_size_t); 146void pmap_unmapbios(vm_offset_t, vm_size_t); 147 148boolean_t pmap_map_io_transient(vm_page_t *, vm_offset_t *, int, boolean_t); 149void pmap_unmap_io_transient(vm_page_t *, vm_offset_t *, int, boolean_t); 150 151bool pmap_get_tables(pmap_t, vm_offset_t, pd_entry_t **, pd_entry_t **, |
152 pt_entry_t **); | 152 pd_entry_t **, pt_entry_t **); |
153 154#define pmap_page_is_mapped(m) (!TAILQ_EMPTY(&(m)->md.pv_list)) 155 156#endif /* _KERNEL */ 157 158#endif /* !LOCORE */ 159 160#endif /* !_MACHINE_PMAP_H_ */ | 153 154#define pmap_page_is_mapped(m) (!TAILQ_EMPTY(&(m)->md.pv_list)) 155 156#endif /* _KERNEL */ 157 158#endif /* !LOCORE */ 159 160#endif /* !_MACHINE_PMAP_H_ */ |