设为首页 加入收藏

TOP

Linux内核初始化过程的源码分析疑点记录
2014-11-24 13:02:37 来源: 作者: 【 】 浏览:0
Tags:Linux 内核 初始 过程 源码 分析 疑点 记录

再总结一下在分析代码时碰到的疑问,算是备案,也算是求助,只要解决了,我都会留言说明的,如下:


1、head.s开始时,首先根据PowerPC ABI规范,保存r3、r4、r5、r6和r7,然后调用early_init,现在只知道r3保存函数返回值,其余未知。__start一开始就cmpwi 0,r5,0,是判断什么


2、在early_init阶段,内核会为CPU特性做fixup处理,调用的几个do_feature_fixup函数,虽然勉强知道是用于代码复用的处理器特性处理,但具体机制不清楚,输入参数__start___ftr_fixup、__stop___ftr_fixup都不清楚含义。


3、在__init_fpu_registers中,有一个REST_32FPRS(0,r9),r9为空数组,宏定义如下:


#define REST_FPR(n, base) lfd n,THREAD_FPR0+8*TS_FPRWIDTH*(n)(base) /*THREAD_FPR0为double fpr[32][TS_FPRWIDTH]在结构体thread_struct中的偏移*/


这句也一直不清楚,是不是清FPR的操作


4、Linux有一个Oops机制,用于处理内核的异常,处理Oops异常的入口位于head_32.S中的trun_on_mmu函数后面的一大段代码,其中还和arch/powerpc/kvm文件夹下的程序有关。(Sailor的CSDN博客有相关介绍)


5、接上面,Linux中的异常处理,在head_32.S中有一大段的代码,一直没敢去碰它,初始化时碰到的DSI异常和PTE中的IMISS和DMISS也都是一笔带过,要找时间和资料细细分析下。


6、函数lockdep_init是什么意思 虽然知道是用于启动Lock Dependency Validator(内核依赖的关系表),本质上就是建立两个散列表calsshash_table和chainhash_table,并初始化全局变量lockdep_initialized,标志已初始化完成。但还是不清楚,有没有更直白点的解释?


7、Linux内核在启动早期就会在屏幕打印输出(BTEXT),以及后来的machin_init中的调试使能函数,对于PowerPC就是NS16550的串口,具体的初始化方法和机制都不是很清楚。


8、MMU硬件初始化的流程,可能是心里太乱了,又正好E300的MMU初始化那么复杂,花了很久都没能理清,是以后摸索的重点。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇基于PowerPC的Linux内核之旅:__s.. 下一篇模拟 Android Button 控件点击事件

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Announcing October (2025-12-24 15:18:16)
·MySQL有什么推荐的学 (2025-12-24 15:18:13)
·到底应该用MySQL还是 (2025-12-24 15:18:11)
·进入Linux世界大门的 (2025-12-24 14:51:47)
·Download Linux | Li (2025-12-24 14:51:44)