- vmm_set_mapping(KERNEL_PID,
- (pa + (j << PG_SIZE_BITS)),
- (pa + (j << PG_SIZE_BITS)),
- PG_PREM_R);
+ uintptr_t _pa = pa + (j << PG_SIZE_BITS);
+ if (vmm_lookup(_pa, &mapping) && *mapping.pte) {
+ continue;
+ }
+ vmm_set_mapping(PD_REFERENCED, _pa, _pa, PG_PREM_R);
+ pmm_mark_page_occupied(KERNEL_PID, _pa >> 12, 0);