Subject: Re: PXA250 Xscale and page tables
To: None <tech-kern@netbsd.org>
From: Steve Woodford <scw@wasabisystems.com>
List: tech-kern
Date: 01/31/2003 21:18:49
On Fri, 31 Jan 2003, Colin Cook wrote:
> We have built a PXA250(B2) device and have NetBSD running. We are now using
> 1.6.
>
> The problem is page table entries. Our main application is running very slow
> and after some research we have found that the second level page table
> entries for application code are marked as non-cached, C=0 B=0. So our
> applications are running entirely out of SDRAM directly.
I think you'll find that application text/data *is* mapped cacheable,
unless there is something gossly wrong with how the pmap is initialised on
your board.
Check how the pmap module uses "pte_l2_s_cache_mode". For Xscale, this is
initialised in pmap_pte_init_xscale().
> 1) Where are the page tables setup for user application code space (in the
> source). High and low level functions would be helpful so I could see how it
> was down from the point a app context is created all the way down to the pte
> bits being set.
Start with pmap_create(), then look at pmap_enter(). The former is called
a process creation time. The latter is called indirectly (usually) as a
result of the application taking a page-fault.
> Also is there a reference manual, book, or other material I could read to
> help me understand the pmap code (arm/arm32)
Well, the Arm ARM is the canonical reference manual for the cpu/mmu. I
would also recommend reading NetBSD's pmap(9) manual page.
Cheers, Steve
--
Wasabi Systems Inc. - The NetBSD Company - http://www.wasabisystems.com/