PHYSADDR

Ian Lepore ian at FreeBSD.org
Sun Mar 3 13:10:01 UTC 2013


On Sat, 2013-03-02 at 22:22 -0800, Tim Kientzle wrote:
> On Mar 2, 2013, at 5:18 PM, Ian Lepore wrote:
> 
> > On Sat, 2013-03-02 at 10:10 -0800, Tim Kientzle wrote:
> >> On Mar 2, 2013, at 9:50 AM, Ian Lepore wrote:
> >> 
> >>> [...]
> >> 
> >>> I'm not sure its safe to assume that (entry-pc & 0xfffff000) is the
> >>> beginning of the kernel; it's true now but need not be so.  But that's
> >>> no big deal, we can tweak the linker script to give us the offset of the
> >>> _start symbol so it'll work no matter what.
> >> 
> >> Patches?  ;-)
> > 
> > This turned out to be a bit trickier than I first thought it would be,
> > but it worked out.
> > 
> > This gets rids of any reference to PHYSADDR and similar constants in the
> > main path through the code.  I didn't address the "running from flash"
> > case or anything under #ifdef SMP, yet.  The only constant left is
> > KERNBASE which is 0xC0000000 for all arm systems.
> > 
> > For now I've got #undef PHYSADDR at the top of the code; this is just
> > for testing without having to remove it yet from anywhere else.
> 
> I see you computing kern_physaddr here.  I presume
> we should be using that in machdep.c to initialize the
> page tables instead of KERNPHYSADDR?
> 
> Tim

Yeah, I suspect so.  I didn't look outside of locore to see what other
changes could flow from computing physaddr.

On a semi-related note, it occurs to me that we should choose a standard
kernel load offset that's a multiple of 1MB, so that the code that
builds the real page tables will be able to use section mappings for all
but the last section of the loaded kernel.

-- Ian




More information about the freebsd-arm mailing list