boot_linux_from_flash
//启动内核
entry(0, machtype, tags);
//对应kernel/arch/arm/boot/compressed/head.S中的代码如下
start:
.type start,#function
.rept 8
mov r0, r0
.endr
b 1f
.word 0x016f2818 @ Magic numbers to help the loader
.word start @ absolute load/run zImage address
.word _edata @ zImage end address
1: mov r7, r1 @ save architecture ID
mov r8, r2 @ save atags pointer
bootloader:
关于启动TAGS
/* ATAG_MEM */
*ptr++ = 4;
*ptr++ = 0x54410002;
*ptr++ = SDRAM_SIZE;
*ptr++ = SDRAM_ADDR;
kernel:
Setup.c (kernel/arch/arm/kernel)
static int __init parse_tag_mem32(const struct tag *tag)
{
return arm_add_memory(tag->u.mem.start, tag->u.mem.size);
}
__tagtable(ATAG_MEM, parse_tag_mem32);