Changeset 6b781c0 in mainline for kernel/genarch
- Timestamp:
- 2007-06-08T15:02:49Z (18 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- c03ee1c
- Parents:
- 3ee8a075
- Location:
- kernel/genarch
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/genarch/include/mm/page_pt.h
r3ee8a075 r6b781c0 55 55 #define PTL2_ENTRIES PTL2_ENTRIES_ARCH 56 56 #define PTL3_ENTRIES PTL3_ENTRIES_ARCH 57 58 /* Table sizes in each level */ 59 #define PTL0_SIZE PTL0_SIZE_ARCH 60 #define PTL1_SIZE PTL1_SIZE_ARCH 61 #define PTL2_SIZE PTL2_SIZE_ARCH 62 #define PTL3_SIZE PTL3_SIZE_ARCH 57 63 58 64 /* -
kernel/genarch/src/mm/as_pt.c
r3ee8a075 r6b781c0 98 98 pte_t *src_ptl0, *dst_ptl0; 99 99 ipl_t ipl; 100 int table_size; 100 101 101 dst_ptl0 = (pte_t *) frame_alloc(ONE_FRAME, FRAME_KA); 102 dst_ptl0 = (pte_t *) frame_alloc(PTL0_SIZE, FRAME_KA); 103 table_size = FRAME_SIZE << PTL0_SIZE; 102 104 103 105 if (flags & FLAG_AS_KERNEL) { 104 memsetb((uintptr_t) dst_ptl0, PAGE_SIZE, 0);106 memsetb((uintptr_t) dst_ptl0, table_size, 0); 105 107 } else { 106 108 uintptr_t src, dst; … … 117 119 dst = (uintptr_t) &dst_ptl0[PTL0_INDEX(KERNEL_ADDRESS_SPACE_START)]; 118 120 119 memsetb((uintptr_t) dst_ptl0, PAGE_SIZE, 0);120 memcpy((void *) dst, (void *) src, PAGE_SIZE- (src - (uintptr_t) src_ptl0));121 memsetb((uintptr_t) dst_ptl0, table_size, 0); 122 memcpy((void *) dst, (void *) src, table_size - (src - (uintptr_t) src_ptl0)); 121 123 mutex_unlock(&AS_KERNEL->lock); 122 124 interrupts_restore(ipl); -
kernel/genarch/src/mm/page_pt.c
r3ee8a075 r6b781c0 76 76 77 77 if (GET_PTL1_FLAGS(ptl0, PTL0_INDEX(page)) & PAGE_NOT_PRESENT) { 78 newpt = (pte_t *)frame_alloc( ONE_FRAME, FRAME_KA);79 memsetb((uintptr_t)newpt, PAGE_SIZE, 0);78 newpt = (pte_t *)frame_alloc(PTL1_SIZE, FRAME_KA); 79 memsetb((uintptr_t)newpt, FRAME_SIZE << PTL1_SIZE, 0); 80 80 SET_PTL1_ADDRESS(ptl0, PTL0_INDEX(page), KA2PA(newpt)); 81 81 SET_PTL1_FLAGS(ptl0, PTL0_INDEX(page), PAGE_PRESENT | PAGE_USER | PAGE_EXEC | PAGE_CACHEABLE | PAGE_WRITE); … … 85 85 86 86 if (GET_PTL2_FLAGS(ptl1, PTL1_INDEX(page)) & PAGE_NOT_PRESENT) { 87 newpt = (pte_t *)frame_alloc( ONE_FRAME, FRAME_KA);88 memsetb((uintptr_t)newpt, PAGE_SIZE, 0);87 newpt = (pte_t *)frame_alloc(PTL2_SIZE, FRAME_KA); 88 memsetb((uintptr_t)newpt, FRAME_SIZE << PTL2_SIZE, 0); 89 89 SET_PTL2_ADDRESS(ptl1, PTL1_INDEX(page), KA2PA(newpt)); 90 90 SET_PTL2_FLAGS(ptl1, PTL1_INDEX(page), PAGE_PRESENT | PAGE_USER | PAGE_EXEC | PAGE_CACHEABLE | PAGE_WRITE); … … 94 94 95 95 if (GET_PTL3_FLAGS(ptl2, PTL2_INDEX(page)) & PAGE_NOT_PRESENT) { 96 newpt = (pte_t *)frame_alloc( ONE_FRAME, FRAME_KA);97 memsetb((uintptr_t)newpt, PAGE_SIZE, 0);96 newpt = (pte_t *)frame_alloc(PTL3_SIZE, FRAME_KA); 97 memsetb((uintptr_t)newpt, FRAME_SIZE << PTL3_SIZE, 0); 98 98 SET_PTL3_ADDRESS(ptl2, PTL2_INDEX(page), KA2PA(newpt)); 99 99 SET_PTL3_FLAGS(ptl2, PTL2_INDEX(page), PAGE_PRESENT | PAGE_USER | PAGE_EXEC | PAGE_CACHEABLE | PAGE_WRITE);
Note:
See TracChangeset
for help on using the changeset viewer.