Chinaunix首页 | 论坛 | 博客
  • 博客访问: 363405
  • 博文数量: 81
  • 博客积分: 4016
  • 博客等级: 上校
  • 技术积分: 800
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-17 18:38
文章分类

全部博文(81)

文章存档

2016年(5)

2015年(2)

2010年(1)

2008年(1)

2007年(4)

2006年(68)

我的朋友

分类: LINUX

2006-04-17 22:19:08

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 architectur=
e
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().
阅读(1094) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~