Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 29 Apr 2006 10:36:41 -0700
From:      Nate Lawson <nate@root.org>
To:        Peter Wemm <peter@wemm.org>
Cc:        src-committers@freebsd.org, cvs-all@freebsd.org, cvs-src@freebsd.org
Subject:   Re: cvs commit: src/sys/i386/i386 pmap.c
Message-ID:  <4453A429.5080406@root.org>
In-Reply-To: <200604291021.12379.peter@wemm.org>
References:  <200604281905.k3SJ59MZ008806@repoman.freebsd.org> <20060429024850.GB997@turion.vk2pj.dyndns.org> <4452FB64.7030308@root.org> <200604291021.12379.peter@wemm.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Peter Wemm wrote:
> Stephan realized that the kernel already allocates one PTE per virtual 
> page.  Although it normally holds physical addresses plus attributes, 
> as long as we don't set PG_V, then there are 31 other bits that we 
> could use for data storage.  We could put virtual addresses in there so 
> long as we didn't set PG_V, and abuse that to have a singly linked 
> freelist threaded through the PTEs.  It turned out even easier though.  
> As long as the virtual addresses are page aligned, we neatly avoid all 
> the PG_* mode bits as well. 

... because you can shift by the page size, saving 12 bits.  But are 
there any problems with 2 MB pages?

Great ideas, both you and ups@.  You know, you can store 2 pointers 
there with XOR.  ;-)

-- 
Nate



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4453A429.5080406>