GoldFish Kernel启动:ARM汇编详解中断禁用与模式设置
5星 · 超过95%的资源 需积分: 10 110 浏览量
更新于2024-07-27
1
收藏 783KB PDF 举报
本文将深入剖析Linux内核GoldFish启动过程中的ARM汇编细节,着重关注arch/arm/kernel/head.S中的关键代码。文章从一个实际的场景出发,描述了Kernel启动阶段如何通过BL指令传递执行权限,以及ENTRY(stext)在启动流程中的核心作用,它定义了内核的入口点。
在汇编代码中,`.section`指令被用来指定代码的存储区域,".text.head","ax"表明这部分代码是可执行的,且处于分配状态。ENTRY(stext)在这里指定了内核启动时执行的第一个函数,它是通过链接器ld脚本中的定义来确定的,确保内核启动的正确流程。
接下来,文章介绍了MSR(Move Special Register)指令,这是ARM汇编中用于设置CPU状态寄存器(CPSR)的重要操作。通过`msrcpsr_c,#PSR_F_BIT|PSR_I_BIT|SVC_MODE`这一行,代码禁用了中断(I/F)并置入Supervisor模式(SVC_MODE),这是操作系统级别运行的必要条件。CPSR控制位包括用户模式标志(如N/Z/C/V)、中断控制(I/F)以及CPU模式选择,共涉及多个字段,每个字段都有特定的功能和用途。
作者还详细解释了不同字段的作用,例如`c`、`x`、`s`和`f`字段分别对应控制、扩展、状态和功能位,这些设置对CPU的行为有着直接影响。通过这些设置,内核能够确保在启动初期,中断被关闭,并以安全的管理模式运行,为后续系统初始化和模块加载做好准备。
文章最后概述了ARMCPU支持的不同运行模式,以及MSR指令的具体操作格式,帮助读者理解内核启动时处理器状态的管理和切换。这不仅对于理解Linux内核的底层工作原理,对于深入学习和调试ARM平台的内核开发都具有很高的参考价值。整个分析过程深入浅出,适合对汇编语言有一定基础的开发者阅读。
2015-09-30 上传
2012-04-28 上传
2020-12-21 上传
2021-09-16 上传
2021-10-11 上传
2017-10-23 上传
2021-10-08 上传
阿拉神农
- 粉丝: 1w+
- 资源: 16
最新资源
- 深入浅出:自定义 Grunt 任务的实践指南
- 网络物理突变工具的多点路径规划实现与分析
- multifeed: 实现多作者间的超核心共享与同步技术
- C++商品交易系统实习项目详细要求
- macOS系统Python模块whl包安装教程
- 掌握fullstackJS:构建React框架与快速开发应用
- React-Purify: 实现React组件纯净方法的工具介绍
- deck.js:构建现代HTML演示的JavaScript库
- nunn:现代C++17实现的机器学习库开源项目
- Python安装包 Acquisition-4.12-cp35-cp35m-win_amd64.whl.zip 使用说明
- Amaranthus-tuberculatus基因组分析脚本集
- Ubuntu 12.04下Realtek RTL8821AE驱动的向后移植指南
- 掌握Jest环境下的最新jsdom功能
- CAGI Toolkit:开源Asterisk PBX的AGI应用开发
- MyDropDemo: 体验QGraphicsView的拖放功能
- 远程FPGA平台上的Quartus II17.1 LCD色块闪烁现象解析