Re: Kernel boot order...

Top Page
Attachments:
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: Russell King - ARM Linux
Date:  
To: Jakob Lindström
CC: ARM Linux Kernel
Subject: Re: Kernel boot order...
On Fri, Oct 05, 2001 at 05:10:46PM +0200, Jakob Lindström wrote:
> I'm currently developing a PDA using the Cirrus Logic EP7312 (720T core)
> ARM-processor. However I am a bit confused over the Linux Kernel boot
> order and especially the arm-specific part that executes _before_
> start_kernel is called, i.e. from nothing (coldboot) til start_kernel.
> What is the ARM Kernel boot order regarding to functions/source files?


What runs first depends on what type of kernel you start running.
If you're using a compressed kernel (aka zImage), the startup code
in arch/arm/boot/compressed/head.S runs (and maybe some other architecture
specific code in other head-*.S files in that directory). We then move
on to the decompressor proper (via decompress_kernel) in
arch/arm/boot/compressed/misc.c which gunzips the kernel. We then
relocate the kernel if required, and call it.

This is where we join the uncompressed kernel (aka Image) startup.
arch/arm/kernel/head-armv.S describes this, and includes such things
as page table initialisation and processor cache initialisation
(via support stuff in arch/arm/mm/proc-*.S).

We then proceed to start_kernel in init/main.c, and everything follows
from that point on. The only other thing to note is that the various
drivers are initialised via a table built by the linker from the
__initcall() and module_init() statements scattered throughout the
kernel source. The code which calls them can be found in init/main.c:
do_initcalls().

> If anyone has any experience in booting a bare EP7312 (i.e. not on a
> eval board) I'd appreciate some info (and code) on that too.


It should work without problem in the latest 2.4-rmk kernels - the
EP7312 support is quite basic at the moment, with very few external
devices.