linux启动流程导读(arm为例) 作者: 时间:2016-11-20 来源:网络 加入技术交流群 扫码加入和技术大咖面对面交流海量资料库查询 收藏 以arm为例,分析一下kernel的启动过程;内核版本:linux-3.2.tar.gz本文引用地址://m.amcfsurvey.com/article/201611/318983.htm一、arch/arm/kernel/head.s.arm__HEAD@#define __HEAD.section ".head.text","ax"ENTRY(stext)THUMB(adrr9, BSYM(1f))@ Kernel is always entered in ARM.THUMB(bxr9)@ If this is a Thumb-2 kernel,THUMB(.thumb)@ switch to Thumb now.THUMB(1:)setmodePSR_F_BIT | PSR_I_BIT | SVC_MODE, r9 @ ensure svc mode关闭普通中断,快速中断,使能svc模式@ and irqs disabledmrcp15, 0, r9, c0, c0@ get processor id获得芯片IDbl__lookup_processor_type@ r5=procinfo r9=cpuid 获得处理器型号,r5 == id,#1movsr10, r5@ invalid processor (r5=0)?校验正确性,0错误THUMB( iteq )@ force fixup-able long branch encodingbeq__error_p@ yes, error p#ifndef CONFIG_XIP_KERNELadrr3, 2fldmiar3, {r4, r8}subr4, r3, r4