3 * \brief Pmap definition common for the arm archs
7 * Copyright (c) 2009, ETH Zurich.
10 * This file is distributed under the terms in the attached LICENSE file.
11 * If you do not find this file, copies can be found by writing to:
12 * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
15 #ifndef TARGET_ARM_BARRELFISH_PMAP_H
16 #define TARGET_ARM_BARRELFISH_PMAP_H
18 #include <barrelfish/pmap.h>
20 /// Node in the meta-data, corresponds to an actual VNode object
22 uint16_t entry; ///< Page table entry of this VNode
23 bool is_vnode; ///< Is this a page table or a page mapping
24 struct vnode *next; ///< Next entry in list of siblings
27 struct capref cap; ///< Capability of this VNode
28 struct vnode *children; ///< Children of this VNode
29 } vnode; // for non-leaf node
31 struct capref cap; ///< Capability of this VNode
32 genvaddr_t offset; ///< Offset within mapped frame cap
33 vregion_flags_t flags; ///< Flags for mapping
34 size_t pte_count; ///< number of mapped PTEs in this mapping
35 } frame; // for leaf node (maps page(s))
41 struct vregion vregion; ///< Vregion used to reserve virtual address for metadata
42 genvaddr_t vregion_offset; ///< Offset into amount of reserved virtual address used
43 struct vnode root; ///< Root of the vnode tree
44 struct slab_allocator slab; ///< Slab allocator for the vnode lists
45 uint8_t slab_buffer[512]; ///< Initial buffer to back the allocator
48 #endif // TARGET_ARM_BARRELFISH_PMAP_H