Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 1 Apr 2009 01:09:45 +0200
From:      Olivier Houchard <mlfbsd@ci0.org>
To:        Guillaume Ballet <gballet@gmail.com>
Cc:        freebsd-arm@freebsd.org
Subject:   Re: locore.S question
Message-ID:  <20090331230945.GA8584@ci0.org>
In-Reply-To: <fd183dc60903250706y26d8f7eeu1f608ace54c8b813@mail.gmail.com>
References:  <fd183dc60903250706y26d8f7eeu1f608ace54c8b813@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
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



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