Confusion in acpi_sleep_machdep().
Matthew Dillon
dillon at apollo.backplane.com
Sun Dec 31 12:54:27 PST 2006
I'm trying to figure out how the acpi_sleep_machdep() code works and
there are a couple of lines I just don't understand:
pm = vmspace_pmap(p->p_vmspace);
cr3 = rcr3();
#ifdef PAE
load_cr3(vtophys(pm->pm_pdpt));
#else
load_cr3(vtophys(pm->pm_pdir));
#endif
page = PHYS_TO_VM_PAGE(sc->acpi_wakephys);
pmap_enter(pm, sc->acpi_wakephys, page,
VM_PROT_READ | VM_PROT_WRITE | VM_PROT_EXECUTE, 1);
First, why isn't it just using kernel_pmap ? What's all the load_cr3()
stuff for ?
Second, why is it entering the physical address sc->acpi_wakephys
as the virtual address in the pmap ? Shouldn't it be using
sc->acpi_wakeaddr there?
Anybody know ?
-Matt
More information about the freebsd-hackers
mailing list