Changeset 76cec1e in mainline for src/mm/page.c
- Timestamp:
- 2005-07-15T21:57:30Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- b4a4c5e3
- Parents:
- e41c47e
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/mm/page.c
re41c47e r76cec1e 54 54 55 55 /* TODO: implement portable way of computing page address from address */ 56 57 56 length = size + (s - (s & 0xfffff000)); 57 cnt = length/PAGE_SIZE + (length%PAGE_SIZE>0); 58 58 59 60 59 for (i = 0; i < cnt; i++) 60 map_page_to_frame(s + i*PAGE_SIZE, s + i*PAGE_SIZE, PAGE_NOT_CACHEABLE, 0); 61 61 62 62 } … … 74 74 void map_page_to_frame(__address page, __address frame, int flags, __address root) 75 75 { 76 77 76 pte_t *ptl0, *ptl1, *ptl2, *ptl3; 77 __address newpt; 78 78 79 79 ptl0 = (pte_t *) PA2KA(root ? root : (__address) GET_PTL0_ADDRESS()); 80 80 81 82 83 84 85 86 81 if (GET_PTL1_FLAGS(ptl0, PTL0_INDEX(page)) & PAGE_NOT_PRESENT) { 82 newpt = frame_alloc(FRAME_KA); 83 memsetb(newpt, PAGE_SIZE, 0); 84 SET_PTL1_ADDRESS(ptl0, PTL0_INDEX(page), KA2PA(newpt)); 85 SET_PTL1_FLAGS(ptl0, PTL0_INDEX(page), PAGE_PRESENT | PAGE_USER); 86 } 87 87 88 88 ptl1 = (pte_t *) PA2KA(GET_PTL1_ADDRESS(ptl0, PTL0_INDEX(page))); 89 89 90 91 92 93 94 95 90 if (GET_PTL2_FLAGS(ptl1, PTL1_INDEX(page)) & PAGE_NOT_PRESENT) { 91 newpt = frame_alloc(FRAME_KA); 92 memsetb(newpt, PAGE_SIZE, 0); 93 SET_PTL2_ADDRESS(ptl1, PTL1_INDEX(page), KA2PA(newpt)); 94 SET_PTL2_FLAGS(ptl1, PTL1_INDEX(page), PAGE_PRESENT | PAGE_USER); 95 } 96 96 97 97 ptl2 = (pte_t *) PA2KA(GET_PTL2_ADDRESS(ptl1, PTL1_INDEX(page))); 98 98 99 100 101 102 103 104 99 if (GET_PTL3_FLAGS(ptl2, PTL2_INDEX(page)) & PAGE_NOT_PRESENT) { 100 newpt = frame_alloc(FRAME_KA); 101 memsetb(newpt, PAGE_SIZE, 0); 102 SET_PTL3_ADDRESS(ptl2, PTL2_INDEX(page), KA2PA(newpt)); 103 SET_PTL3_FLAGS(ptl2, PTL2_INDEX(page), PAGE_PRESENT | PAGE_USER); 104 } 105 105 106 106 ptl3 = (pte_t *) PA2KA(GET_PTL3_ADDRESS(ptl2, PTL2_INDEX(page))); 107 107 108 109 108 SET_FRAME_ADDRESS(ptl3, PTL3_INDEX(page), frame); 109 SET_FRAME_FLAGS(ptl3, PTL3_INDEX(page), flags); 110 110 }
Note:
See TracChangeset
for help on using the changeset viewer.