- Timestamp:
- 2006-01-08T16:24:32Z (20 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- f275cb3
- Parents:
- 59adc2b
- Location:
- generic
- Files:
-
- 1 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
generic/include/mm/page.h
r59adc2b r677a6d5 30 30 #define __PAGE_H__ 31 31 32 #include <arch/mm/asid.h> 32 33 #include <arch/types.h> 33 34 #include <typedefs.h> … … 57 58 58 59 struct page_operations { 59 void (* mapping_insert)(__address page, __address frame, int flags, __address root);60 pte_t *(* mapping_find)(__address page, __address root);60 void (* mapping_insert)(__address page, asid_t asid, __address frame, int flags, __address root); 61 pte_t *(* mapping_find)(__address page, asid_t asid, __address root); 61 62 }; 62 63 typedef struct page_operations page_operations_t; … … 65 66 66 67 extern void page_init(void); 67 extern void page_mapping_insert(__address page, __address frame, int flags, __address root);68 extern pte_t *page_mapping_find(__address page, __address root);68 extern void page_mapping_insert(__address page, asid_t asid, __address frame, int flags, __address root); 69 extern pte_t *page_mapping_find(__address page, asid_t asid, __address root); 69 70 extern void map_structure(__address s, size_t size); 70 71 -
generic/src/mm/page.c
r59adc2b r677a6d5 28 28 29 29 #include <mm/page.h> 30 #include <arch/mm/page.h> 31 #include <arch/mm/asid.h> 32 #include <mm/asid.h> 30 33 #include <mm/frame.h> 31 #include <arch/mm/page.h>32 34 #include <arch/types.h> 33 35 #include <typedefs.h> … … 35 37 #include <memstr.h> 36 38 #include <debug.h> 39 #include <arch.h> 37 40 38 41 /** Virtual operations for page subsystem. */ … … 42 45 { 43 46 page_arch_init(); 44 page_mapping_insert(0x0, 0 x0, PAGE_NOT_PRESENT, 0);47 page_mapping_insert(0x0, 0, 0x0, PAGE_NOT_PRESENT, 0); 45 48 } 46 49 … … 62 65 63 66 for (i = 0; i < cnt; i++) 64 page_mapping_insert(s + i*PAGE_SIZE, s + i*PAGE_SIZE, PAGE_NOT_CACHEABLE, 0);67 page_mapping_insert(s + i*PAGE_SIZE, ASID_KERNEL, s + i*PAGE_SIZE, PAGE_NOT_CACHEABLE, 0); 65 68 66 69 } … … 72 75 * 73 76 * @param page Virtual address of the page to be mapped. 77 * @param asid Address space to wich page belongs. 74 78 * @param frame Physical address of memory frame to which the mapping is done. 75 79 * @param flags Flags to be used for mapping. 76 80 * @param root Explicit PTL0 address. 77 81 */ 78 void page_mapping_insert(__address page, __address frame, int flags, __address root)82 void page_mapping_insert(__address page, asid_t asid, __address frame, int flags, __address root) 79 83 { 80 84 ASSERT(page_operations); 81 85 ASSERT(page_operations->mapping_insert); 82 86 83 page_operations->mapping_insert(page, frame, flags, root);87 page_operations->mapping_insert(page, asid, frame, flags, root); 84 88 } 85 89 … … 89 93 * 90 94 * @param page Virtual page. 95 * @param asid Address space to wich page belongs. 91 96 * @param root PTL0 address if non-zero. 92 97 * 93 98 * @return NULL if there is no such mapping; entry from PTL3 describing the mapping otherwise. 94 99 */ 95 pte_t *page_mapping_find(__address page, __address root)100 pte_t *page_mapping_find(__address page, asid_t asid, __address root) 96 101 { 97 102 ASSERT(page_operations); 98 103 ASSERT(page_operations->mapping_find); 99 104 100 return page_operations->mapping_find(page, root);105 return page_operations->mapping_find(page, asid, root); 101 106 } -
generic/src/mm/vm.c
r59adc2b r677a6d5 163 163 ASSERT(m->ptl0); 164 164 for (i=0; i<a->size; i++) 165 page_mapping_insert(a->address + i*PAGE_SIZE, a->mapping[i], flags, (__address) m->ptl0);165 page_mapping_insert(a->address + i*PAGE_SIZE, m->asid, a->mapping[i], flags, (__address) m->ptl0); 166 166 167 167 spinlock_unlock(&a->lock); … … 181 181 ASSERT(m->ptl0); 182 182 for (i=0; i<a->size; i++) 183 page_mapping_insert(a->address + i*PAGE_SIZE, 0, PAGE_NOT_PRESENT, (__address) m->ptl0);183 page_mapping_insert(a->address + i*PAGE_SIZE, 0, 0, PAGE_NOT_PRESENT, (__address) m->ptl0); 184 184 185 185 spinlock_unlock(&a->lock);
Note:
See TracChangeset
for help on using the changeset viewer.