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