Subversion Repositories HelenOS

Rev

Rev 3141 | Rev 3143 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3141 Rev 3142
Line 150... Line 150...
150
         */
150
         */
151
        if (entry->p_flags & PF_W) {
151
        if (entry->p_flags & PF_W) {
152
            frame = (uintptr_t)frame_alloc(ONE_FRAME, 0);
152
            frame = (uintptr_t)frame_alloc(ONE_FRAME, 0);
153
            memcpy((void *) PA2KA(frame),
153
            memcpy((void *) PA2KA(frame),
154
                (void *) (base + i * FRAME_SIZE), FRAME_SIZE);
154
                (void *) (base + i * FRAME_SIZE), FRAME_SIZE);
155
            if (entry->p_flags & PF_X)
155
            if (entry->p_flags & PF_X) {
156
                smc_coherence_block(PA2KA(frame), FRAME_SIZE);
156
                smc_coherence_block(PA2KA(frame), FRAME_SIZE);
-
 
157
            }
157
            dirty = true;
158
            dirty = true;
158
        } else {
159
        } else {
159
            frame = KA2PA(base + i * FRAME_SIZE);
160
            frame = KA2PA(base + i * FRAME_SIZE);
160
        }  
161
        }  
161
    } else if (page >= start_anon) {
162
    } else if (page >= start_anon) {
Line 189... Line 190...
189
 
190
 
190
        frame = (uintptr_t)frame_alloc(ONE_FRAME, 0);
191
        frame = (uintptr_t)frame_alloc(ONE_FRAME, 0);
191
        memcpy((void *) (PA2KA(frame) + pad_lo),
192
        memcpy((void *) (PA2KA(frame) + pad_lo),
192
            (void *) (base + i * FRAME_SIZE + pad_lo),
193
            (void *) (base + i * FRAME_SIZE + pad_lo),
193
            FRAME_SIZE - pad_lo - pad_hi);
194
            FRAME_SIZE - pad_lo - pad_hi);
194
        if (entry->p_flags & PF_X)
195
        if (entry->p_flags & PF_X) {
195
            smc_coherence_block(PA2KA(frame) + pad_lo, FRAME_SIZE -
196
            smc_coherence_block(PA2KA(frame) + pad_lo, FRAME_SIZE -
196
                pad_lo - pad_hi);
197
                pad_lo - pad_hi);
-
 
198
        }
197
        memsetb((void *) PA2KA(frame), pad_lo, 0);
199
        memsetb((void *) PA2KA(frame), pad_lo, 0);
198
        memsetb((void *) (PA2KA(frame) + FRAME_SIZE - pad_hi), pad_hi,
200
        memsetb((void *) (PA2KA(frame) + FRAME_SIZE - pad_hi), pad_hi,
199
            0);
201
            0);
200
        dirty = true;
202
        dirty = true;
201
    }
203
    }