pmap-v6.h (295206) | pmap-v6.h (295257) |
---|---|
1/*- 2 * Copyright 2014 Svatopluk Kraus <onwahe@gmail.com> 3 * Copyright 2014 Michal Meloun <meloun@miracle.cz> 4 * Copyright (c) 1991 Regents of the University of California. 5 * All rights reserved. 6 * 7 * This code is derived from software contributed to Berkeley by 8 * the Systems Programming Group of the University of Utah Computer --- 28 unchanged lines hidden (view full) --- 37 * map the page tables using the pagetables themselves. This is done to 38 * reduce the impact on kernel virtual memory for lots of sparse address 39 * space, and to reduce the cost of memory to each process. 40 * 41 * from: hp300: @(#)pmap.h 7.2 (Berkeley) 12/16/90 42 * from: @(#)pmap.h 7.4 (Berkeley) 5/12/91 43 * from: FreeBSD: src/sys/i386/include/pmap.h,v 1.70 2000/11/30 44 * | 1/*- 2 * Copyright 2014 Svatopluk Kraus <onwahe@gmail.com> 3 * Copyright 2014 Michal Meloun <meloun@miracle.cz> 4 * Copyright (c) 1991 Regents of the University of California. 5 * All rights reserved. 6 * 7 * This code is derived from software contributed to Berkeley by 8 * the Systems Programming Group of the University of Utah Computer --- 28 unchanged lines hidden (view full) --- 37 * map the page tables using the pagetables themselves. This is done to 38 * reduce the impact on kernel virtual memory for lots of sparse address 39 * space, and to reduce the cost of memory to each process. 40 * 41 * from: hp300: @(#)pmap.h 7.2 (Berkeley) 12/16/90 42 * from: @(#)pmap.h 7.4 (Berkeley) 5/12/91 43 * from: FreeBSD: src/sys/i386/include/pmap.h,v 1.70 2000/11/30 44 * |
45 * $FreeBSD: head/sys/arm/include/pmap-v6.h 295206 2016-02-03 12:11:07Z skra $ | 45 * $FreeBSD: head/sys/arm/include/pmap-v6.h 295257 2016-02-04 14:15:24Z skra $ |
46 */ 47 48#ifndef _MACHINE_PMAP_H_ 49#define _MACHINE_PMAP_H_ 50 51#include <sys/queue.h> 52#include <sys/_cpuset.h> 53#include <sys/_lock.h> --- 56 unchanged lines hidden (view full) --- 110}; 111#endif 112struct pv_entry; 113struct pv_chunk; 114 115struct md_page { 116 TAILQ_HEAD(,pv_entry) pv_list; 117 uint16_t pt2_wirecount[4]; | 46 */ 47 48#ifndef _MACHINE_PMAP_H_ 49#define _MACHINE_PMAP_H_ 50 51#include <sys/queue.h> 52#include <sys/_cpuset.h> 53#include <sys/_lock.h> --- 56 unchanged lines hidden (view full) --- 110}; 111#endif 112struct pv_entry; 113struct pv_chunk; 114 115struct md_page { 116 TAILQ_HEAD(,pv_entry) pv_list; 117 uint16_t pt2_wirecount[4]; |
118 int pat_mode; | 118 vm_memattr_t pat_mode; |
119}; 120 121struct pmap { 122 struct mtx pm_mtx; 123 pt1_entry_t *pm_pt1; /* KVA of pt1 */ 124 pt2_entry_t *pm_pt2tab; /* KVA of pt2 pages table */ 125 TAILQ_HEAD(,pv_chunk) pm_pvchunk; /* list of mappings in pmap */ 126 cpuset_t pm_active; /* active on cpus */ --- 41 unchanged lines hidden (view full) --- 168 TAILQ_ENTRY(pv_chunk) pc_lru; 169 struct pv_entry pc_pventry[_NPCPV]; 170}; 171 172#ifdef _KERNEL 173struct pcb; 174extern ttb_entry_t pmap_kern_ttb; /* TTB for kernel pmap */ 175 | 119}; 120 121struct pmap { 122 struct mtx pm_mtx; 123 pt1_entry_t *pm_pt1; /* KVA of pt1 */ 124 pt2_entry_t *pm_pt2tab; /* KVA of pt2 pages table */ 125 TAILQ_HEAD(,pv_chunk) pm_pvchunk; /* list of mappings in pmap */ 126 cpuset_t pm_active; /* active on cpus */ --- 41 unchanged lines hidden (view full) --- 168 TAILQ_ENTRY(pv_chunk) pc_lru; 169 struct pv_entry pc_pventry[_NPCPV]; 170}; 171 172#ifdef _KERNEL 173struct pcb; 174extern ttb_entry_t pmap_kern_ttb; /* TTB for kernel pmap */ 175 |
176#define pmap_page_get_memattr(m) ((vm_memattr_t)(m)->md.pat_mode) | 176#define pmap_page_get_memattr(m) ((m)->md.pat_mode) |
177#define pmap_page_is_write_mapped(m) (((m)->aflags & PGA_WRITEABLE) != 0) 178 179/* 180 * Only the following functions or macros may be used before pmap_bootstrap() 181 * is called: pmap_kenter(), pmap_kextract(), pmap_kremove(), vtophys(), and 182 * vtopte2(). 183 */ 184void pmap_bootstrap(vm_offset_t ); --- 74 unchanged lines hidden --- | 177#define pmap_page_is_write_mapped(m) (((m)->aflags & PGA_WRITEABLE) != 0) 178 179/* 180 * Only the following functions or macros may be used before pmap_bootstrap() 181 * is called: pmap_kenter(), pmap_kextract(), pmap_kremove(), vtophys(), and 182 * vtopte2(). 183 */ 184void pmap_bootstrap(vm_offset_t ); --- 74 unchanged lines hidden --- |