Source-Changes-D archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: CVS commit: src/sys/arch
On Sun, Sep 10, 2017 at 01:45:39PM +0200, Maxime Villard wrote:
> > it is a VA (it's a pointer to a pte, not the pte iself)
>
> Sorry, I meant the contrary: it is called with a va, while it should take a
> pte. Right now we're doing:
>
> frames[i] = xpmap_ptetomach((pt_entry_t *)va) >> PAGE_SHIFT;
>
> It seems to me it should be
>
> pte = kvtopte(va);
> frames[i] = xpmap_ptetomach(pte) >> PAGE_SHIFT;
>
> Am I missing something?
I think it should be
ptp = kvtopte(va);
frames[f] = (*ptp & PG_FRAME) >> PAGE_SHIFT;
But at first glance it looks like xpmap_ptetomach() returns the same
result as (*ptp & PG_FRAME)
>
> > > And is it normal that in
> > > i386::gdt_init_cpu() we're not using a mask on the pte when doing
> > > [*ptp >> PAGE_SHIFT]?
> >
> > Why should it be masked ?
>
> Because PG_NX is above bit 12. I believe it should be:
>
> frames[f] = (*ptp & PG_FRAME) >> PAGE_SHIFT;
probably right
--
Manuel Bouyer <bouyer%antioche.eu.org@localhost>
NetBSD: 26 ans d'experience feront toujours la difference
--
Home |
Main Index |
Thread Index |
Old Index