How to access physical memory
scwsy00 at gmail.com
Mon Dec 24 03:28:54 UTC 2018
pdp = (pdp_entry_t *)PHYS_TO_DMAP(*pml4 & PG_FRAME);
/* Now find the pdp page */
pdp = &pdp[pdpindex & ((1ul << NPDPEPGSHIFT) - 1)];
*pdp = VM_PAGE_TO_PHYS(m) | PG_U | PG_RW | PG_V | PG_A | PG_M;
There is the code in _pmap_allocpte.
宋辰伟 <scwsy00 at gmail.com> 于2018年12月24日周一 上午11:23写道：
> Hi I'm the new here . And I have some questions with pmap.
> [image: 1545542790461.png]
> See `*pml4` is the physical address of a page with some flag. And then
> updated the address to the Direct Map Space. Then We calculate the offset
> of the real pdp we need .
> How could it access to `*pdp`? it is a virtual addr in Direct Map Space.
> Why don't change the physical space directly since we have the physical
> page already.
More information about the freebsd-questions