Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 31 May 2006 19:50:25 +0200
From:      Olivier Houchard <mlfbsd@ci0.org>
To:        "Max N. Boyarov" <m.boyarov@bsd.by>
Cc:        freebsd-arm@freebsd.org
Subject:   Re: i80321reg.h
Message-ID:  <20060531175025.GA97299@ci0.org>
In-Reply-To: <7hk6823yzj.fsf@bsd.by>
References:  <7hodxe4132.fsf@bsd.by> <20060531170631.GA96970@ci0.org> <7hk6823yzj.fsf@bsd.by>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, May 31, 2006 at 08:06:40PM +0300, Max N. Boyarov wrote:
> 
> >>>>> "OH" == Olivier Houchard writes:
> 
>  OH>  On Wed, May 31, 2006 at 07:21:21PM +0300, Max N. Boyarov wrote:
>  >> 
>  >> Hi!
>  >> 
>  >> What document should I read in order to understand
>  >> how to calculate the defines that are used in i80321reg.h ?
>  >> 
> 
>  OH> Hi Max,
> Hi Olivier, 
>  OH> I'm not sure I understand the question. However, those most of those values
>  OH> come from the Intel 80321 I/O Processor developer's manual, available here :
>  OH> http://www.intel.com/design/iio/manuals/273517.htm
> 
> Sorry for my english :). I meant, I do not know how freebsd works with virtual
> memory, i.e. what address range is used for user applications, where kernel resides.
> What would you recommend to read about that? Just for education purposes :) My concern 
> is 80321 xcale port only (not generic).
> 

No worries, my english isn't better :)
Unfortunately I'm not sure there's something explaining this beside the code
itself, so I'm gonna try to answer.
Most of this is the same for every arm port, including the 80321.
The interesting #define are mostly in sys/arm/include/vmparam.h
 * The line between user space and kernel space
 * Mappings >= KERNEL_BASE are constant across all processes
 */
#define KERNBASE                0xc0000000

So generally speaking, whatever is >= 0xc0000000 is kernelland, whatever is <
is userland.
In arm/xscale/iq31244_machdep.c (which should be usable for every i80321
port, and thus has an unaccurate name), we map 0xfe800000 (IQ80321_OBIO_BASE),
physical == virtual, to be able to use the UART early, 
then we use the virtual address 0xfe400000 (IQ80321_IOW_VBASE) to map the ATU
stuff and the CPU registers.

I'm still not sure I properly answer to your question:) Feel free to ask
 for more.

Olivier



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