Changeset 80bcaed in mainline for kernel/genarch
- Timestamp:
- 2007-02-03T13:22:24Z (18 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- f619ec11
- Parents:
- fa8e7d2
- Location:
- kernel/genarch
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/genarch/include/mm/as_ht.h
rfa8e7d2 r80bcaed 37 37 38 38 #include <mm/mm.h> 39 #include <arch/mm/asid.h>40 39 #include <adt/list.h> 41 #include <adt/btree.h> 42 #include <synch/mutex.h> 43 44 /** Address space structure. 45 * 46 * as_t contains the list of as_areas of userspace accessible 47 * pages for one or more tasks. Ranges of kernel memory pages are not 48 * supposed to figure in the list as they are shared by all tasks and 49 * set up during system initialization. 50 */ 51 typedef struct { 52 /** Protected by asidlock. */ 53 link_t inactive_as_with_asid_link; 54 55 mutex_t lock; 56 57 /** Number of references (i.e tasks that reference this as). */ 58 count_t refcount; 59 60 /** Number of processors on wich is this address space active. */ 61 count_t cpu_refcount; 62 63 /** B+tree of address space areas. */ 64 btree_t as_area_btree; 65 66 /** Address space identifier. Constant on architectures that do not support ASIDs.*/ 67 asid_t asid; 68 69 /** Architecture specific content. */ 70 as_arch_t arch; 71 } as_t; 40 #include <arch/types.h> 72 41 73 42 typedef struct { 43 } as_genarch_t; 44 45 struct as; 46 47 typedef struct pte { 74 48 link_t link; /**< Page hash table link. */ 75 as_t*as; /**< Address space. */49 struct as *as; /**< Address space. */ 76 50 uintptr_t page; /**< Virtual memory page. */ 77 51 uintptr_t frame; /**< Physical memory frame. */ -
kernel/genarch/include/mm/as_pt.h
rfa8e7d2 r80bcaed 37 37 38 38 #include <mm/mm.h> 39 #include <arch/mm/asid.h> 40 #include <adt/list.h> 41 #include <adt/btree.h> 42 #include <synch/mutex.h> 39 #include <arch/types.h> 43 40 44 41 #define AS_PAGE_TABLE 45 42 46 /** Address space structure.47 *48 * as_t contains the list of as_areas of userspace accessible49 * pages for one or more tasks. Ranges of kernel memory pages are not50 * supposed to figure in the list as they are shared by all tasks and51 * set up during system initialization.52 */53 43 typedef struct { 54 /** Protected by asidlock. */55 link_t inactive_as_with_asid_link;56 57 mutex_t lock;58 59 /** Number of references (i.e tasks that reference this as). */60 count_t refcount;61 62 /** Number of processors on wich is this address space active. */63 count_t cpu_refcount;64 65 /** B+tree of address space areas. */66 btree_t as_area_btree;67 68 44 /** Page table pointer. */ 69 45 pte_t *page_table; 70 71 /** Address space identifier. Constant on architectures that do not support ASIDs.*/ 72 asid_t asid; 73 74 /** Architecture specific content. */ 75 as_arch_t arch; 76 } as_t; 46 } as_genarch_t; 77 47 78 48 #endif -
kernel/genarch/include/mm/page_ht.h
rfa8e7d2 r80bcaed 60 60 #define PTE_EXECUTABLE(pte) ((pte)->x != 0) 61 61 62 #define SET_PTL0_ADDRESS(x)63 64 62 extern as_operations_t as_ht_operations; 65 63 extern page_mapping_operations_t ht_mapping_operations; -
kernel/genarch/src/mm/as_pt.c
rfa8e7d2 r80bcaed 86 86 ipl = interrupts_disable(); 87 87 mutex_lock(&AS_KERNEL->lock); 88 src_ptl0 = (pte_t *) PA2KA((uintptr_t) AS_KERNEL-> page_table);88 src_ptl0 = (pte_t *) PA2KA((uintptr_t) AS_KERNEL->genarch.page_table); 89 89 90 90 src = (uintptr_t) &src_ptl0[PTL0_INDEX(KERNEL_ADDRESS_SPACE_START)]; -
kernel/genarch/src/mm/page_pt.c
rfa8e7d2 r80bcaed 73 73 pte_t *newpt; 74 74 75 ptl0 = (pte_t *) PA2KA((uintptr_t) as-> page_table);75 ptl0 = (pte_t *) PA2KA((uintptr_t) as->genarch.page_table); 76 76 77 77 if (GET_PTL1_FLAGS(ptl0, PTL0_INDEX(page)) & PAGE_NOT_PRESENT) { … … 129 129 */ 130 130 131 ptl0 = (pte_t *) PA2KA((uintptr_t) as-> page_table);131 ptl0 = (pte_t *) PA2KA((uintptr_t) as->genarch.page_table); 132 132 133 133 if (GET_PTL1_FLAGS(ptl0, PTL0_INDEX(page)) & PAGE_NOT_PRESENT) … … 245 245 pte_t *ptl0, *ptl1, *ptl2, *ptl3; 246 246 247 ptl0 = (pte_t *) PA2KA((uintptr_t) as-> page_table);247 ptl0 = (pte_t *) PA2KA((uintptr_t) as->genarch.page_table); 248 248 249 249 if (GET_PTL1_FLAGS(ptl0, PTL0_INDEX(page)) & PAGE_NOT_PRESENT)
Note:
See TracChangeset
for help on using the changeset viewer.