Linux Process Address Space

Mon Jul 2 19:50:50 EST 2007


Based on the following thread regarding Linux memory map:

Obviously, I am still a newbie in Linux kernel and I find it hard to grasp
things especially Linux MM.  I quoted some lines from this thread (from
Dan's post), then some follow-up questions.  I do hope you could help me out
in these:

1.)  *"Virtual addresses from 0 to 0x7fffffff are for user context."*
     a.) If TASK_SIZE is defined as 0x80000000, does this necessarily mean
that 2G-2G split is used?

2.)  *"For this reason, and since it followed prior PowerPC platform
examples, I chose to map the embedded 8xx kernel to the 0xc0000000 virtual
     a.)  This 0xc0000000 virtual address must be defined as the value of
     b.)  Does this mean that the kernel's .text section is located in this
     c.)  If user space is only up to 0x80000000, and the kernel starts at
0xc0000000, what could possibly be located in between?

3.)  *"Prior to this KVM initialization, we choose to map virtual to
physical addresses 1:1.  That is, the kernel virtual address exactly matches
the physical address on the bus.  These mappings are typically done in
arch/ppc/kernel/head.S, or arch/ppc/mm/init.c.  Only   absolutely necessary
mappings should be done at this time, for example board control registers or
a serial uart.  Normal device driver initialization should map resources
later when necessary." *
      a.)  Is there any chance that the mapping done here is relocated later
in the initialization process?

I would really appreciate your input on this.  Thank you very much!

-------------- next part --------------
An HTML attachment was scrubbed...

More information about the Linuxppc-embedded mailing list