locore.S question
Olivier Houchard
mlfbsd at ci0.org
Tue Mar 31 16:08:19 PDT 2009
On Wed, Mar 25, 2009 at 03:06:49PM +0100, Guillaume Ballet wrote:
> Hello list,
>
Hi Guillaume,
> I'm working on a FreeBSD port for the BeagleBoard. I'm starting the
> kernel with u-boot and wrote my own small loader for this purpose.
> That loader puts the kernel at 0x81000000 (physical address, since the
> MMU is disabled at this stage).
>
Nice to hear you're working on that port :)
> In locore.S, however, there is the following piece of code that is
> executed before the MMU is disabled:
>
> 112 adr r7, Lunmapped
> 113 bic r7, r7, #0xff000000
> 114 orr r7, r7, #PHYSADDR
>
> (snip, disabling MMU)
>
> 129 mov pc, r7
>
> Since PHYSADDR is set to 0x80000000 (physical start of RAM), then r7
> is set to 0x80000000 + offset(Lunmapped) instead of 0x81000000 +
> offset(Lunmapped). Of course it crashes.
>
> Now, bypassing the problem is relatively easy, but still I was
> wondering why it is 0xff000000 instead of 0xf0000000 on line 113?
>
Honestly, I may have had a reason at some point, but can't remember which.
So I went ahead and just committed the change, I doubt it will be a problem.
Thanks for working on this !
Olivier
More information about the freebsd-arm
mailing list