Subversion Repositories HelenOS

Rev

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

Rev 3142 Rev 3143
Line 151... Line 151...
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((void *) PA2KA(frame),
-
 
157
                    FRAME_SIZE);
157
            }
158
            }
158
            dirty = true;
159
            dirty = true;
159
        } else {
160
        } else {
160
            frame = KA2PA(base + i * FRAME_SIZE);
161
            frame = KA2PA(base + i * FRAME_SIZE);
161
        }  
162
        }  
Line 191... Line 192...
191
        frame = (uintptr_t)frame_alloc(ONE_FRAME, 0);
192
        frame = (uintptr_t)frame_alloc(ONE_FRAME, 0);
192
        memcpy((void *) (PA2KA(frame) + pad_lo),
193
        memcpy((void *) (PA2KA(frame) + pad_lo),
193
            (void *) (base + i * FRAME_SIZE + pad_lo),
194
            (void *) (base + i * FRAME_SIZE + pad_lo),
194
            FRAME_SIZE - pad_lo - pad_hi);
195
            FRAME_SIZE - pad_lo - pad_hi);
195
        if (entry->p_flags & PF_X) {
196
        if (entry->p_flags & PF_X) {
196
            smc_coherence_block(PA2KA(frame) + pad_lo, FRAME_SIZE -
197
            smc_coherence_block((void *) (PA2KA(frame) + pad_lo),
197
                pad_lo - pad_hi);
198
                FRAME_SIZE - pad_lo - pad_hi);
198
        }
199
        }
199
        memsetb((void *) PA2KA(frame), pad_lo, 0);
200
        memsetb((void *) PA2KA(frame), pad_lo, 0);
200
        memsetb((void *) (PA2KA(frame) + FRAME_SIZE - pad_hi), pad_hi,
201
        memsetb((void *) (PA2KA(frame) + FRAME_SIZE - pad_hi), pad_hi,
201
            0);
202
            0);
202
        dirty = true;
203
        dirty = true;