Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/genarch/src/mm/page_pt.c

    ref9a2a8 r15187c3  
    7777    unsigned int flags)
    7878{
    79         //printf("pt_mapping_insert: as=%p, page=0x%08x, frame=0x%08x\n", as, page, frame);
    80 
    8179        pte_t *ptl0 = (pte_t *) PA2KA((uintptr_t) as->genarch.page_table);
    8280
    83         //printf("ptl0 = %p\n", ptl0);
    84 
    8581        ASSERT(page_table_locked(as));
    86 
     82       
    8783        if (GET_PTL1_FLAGS(ptl0, PTL0_INDEX(page)) & PAGE_NOT_PRESENT) {
    88         //      printf("allocating ptl1\n");
    89 
    9084                pte_t *newpt = (pte_t *) frame_alloc(PTL1_SIZE,
    9185                    FRAME_LOWMEM | FRAME_KA);
    92 
    93         //      printf("newpt = %p, index = %d\n", newpt, PTL0_INDEX(page));
    94 
    9586                memsetb(newpt, FRAME_SIZE << PTL1_SIZE, 0);
    9687                SET_PTL1_ADDRESS(ptl0, PTL0_INDEX(page), KA2PA(newpt));
     
    109100        pte_t *ptl1 = (pte_t *) PA2KA(GET_PTL1_ADDRESS(ptl0, PTL0_INDEX(page)));
    110101       
    111 //      printf("ptl1 = %p\n", ptl1);
    112 
    113102        if (GET_PTL2_FLAGS(ptl1, PTL1_INDEX(page)) & PAGE_NOT_PRESENT) {
    114 //              printf("allocating ptl2\n");
    115 
    116103                pte_t *newpt = (pte_t *) frame_alloc(PTL2_SIZE,
    117104                    FRAME_LOWMEM | FRAME_KA);
    118 
    119 //              printf("newpt = %p, index = %d\n", newpt, PTL1_INDEX(page));
    120 
    121105                memsetb(newpt, FRAME_SIZE << PTL2_SIZE, 0);
    122106                SET_PTL2_ADDRESS(ptl1, PTL1_INDEX(page), KA2PA(newpt));
     
    128112                 */
    129113                write_barrier();
    130                 SET_PTL2_PRESENT(ptl1, PTL1_INDEX(page));       
     114                SET_PTL2_PRESENT(ptl1, PTL1_INDEX(page));
    131115        }
    132116       
    133117        pte_t *ptl2 = (pte_t *) PA2KA(GET_PTL2_ADDRESS(ptl1, PTL1_INDEX(page)));
    134118       
    135 //      printf("ptl2 = %p\n", ptl2);
    136 
    137119        if (GET_PTL3_FLAGS(ptl2, PTL2_INDEX(page)) & PAGE_NOT_PRESENT) {
    138 //              printf("allocating ptl3\n");
    139 
    140120                pte_t *newpt = (pte_t *) frame_alloc(PTL3_SIZE,
    141121                    FRAME_LOWMEM | FRAME_KA);
    142 
    143 //              printf("newpt = %p, index = %d\n", newpt, PTL2_INDEX(page));
    144 
    145122                memsetb(newpt, FRAME_SIZE << PTL3_SIZE, 0);
    146123                SET_PTL3_ADDRESS(ptl2, PTL2_INDEX(page), KA2PA(newpt));
     
    157134        pte_t *ptl3 = (pte_t *) PA2KA(GET_PTL3_ADDRESS(ptl2, PTL2_INDEX(page)));
    158135       
    159 //      printf("ptl3 = %p\n", ptl3);
    160 
    161136        SET_FRAME_ADDRESS(ptl3, PTL3_INDEX(page), frame);
    162137        SET_FRAME_FLAGS(ptl3, PTL3_INDEX(page), flags | PAGE_NOT_PRESENT);
     
    205180         * Destroy the mapping.
    206181         * Setting to PAGE_NOT_PRESENT is not sufficient.
    207          */
     182         * But we need SET_FRAME for possible PT coherence maintenance.
     183         * At least on ARM.
     184         */
     185        //TODO: Fix this inconsistency
     186        SET_FRAME_FLAGS(ptl3, PTL3_INDEX(page), PAGE_NOT_PRESENT);
    208187        memsetb(&ptl3[PTL3_INDEX(page)], sizeof(pte_t), 0);
    209188       
Note: See TracChangeset for help on using the changeset viewer.