linux kernel decompress_kernel 启动解压
linux 解压后会跳转到,kernel执行地址: head.S中入口执行。解压之前的操作流程呢?
1. linux kernel 被uboot load到内存后的入口函数
arch/arm/boot/compressed/vmlinux.lds.in中定义了linux 入口:
OUTPUT_ARCH(arm)
ENTRY(_start)
SECTIONS
{
....
这里的start定义在 arch/arm/boot/compressed/head.s中
start:
.type start,#function
.rept 7
mov r0, r0
.endr
ARM( mov r0, r0 )
ARM( b 1f )
THUMB( adr r12, BSYM(1f) )
THUMB( bx r12 )
THUMB( bx r12 )
.word 0x016f2818 @ Magic numbers to help the loader
.word start @ absolute load/run zImage address
.word _edata @ zImage end address
THUMB( .thumb )
1: mov r7, r1 @ save architecture ID
mov r8, r2 @ save atags pointer
......
*
* The C runtime environment should now be setup sufficiently.
* Set up some pointers, and start decompressing.
* r4 = kernel execution address
* r7 = architecture ID
* r8 = atags pointer
*/
mov r0, r4
mov r1, sp @ malloc space above stack
add r2, sp, #0x10000 @ 64k max
mov r3, r7
bl decompress_kernel
bl cache_clean_flush
bl cache_off
mov r0, #0 @ must be zero
mov r1, r7 @ restore architecture number
mov r2, r8 @ restore atags pointer
mov pc, r4 @ call kernel
decompress_kernel实现在misc.c中,可以看到,misc中同样定义了
unsigned int __machine_arch_type; 这个在kernel的setup.c中已经有定义了?unsigned int __machine_arch_type __read_mostly;
因此, 可以看到arch\arm\boot\compressed中代码编译是独立于kernel image的
---------------------
作者:thegameisfives
来源:CSDN
原文:https://blog.csdn.net/thegameisfives/article/details/9019503
版权声明:本文为博主原创文章,转载请附上博文链接!
linux kernel decompress_kernel 启动解压相关推荐
- Linux按压缩率大小排序,Linux下常用压缩 解压命令与压缩比率对比
常用的格式有: tar, tar.gz(tgz), tar.bz2, 不同方式,压缩和解压方式所耗CPU时间和压缩比率也差异也比较大. 1. tar 只是打包动作,相当于归档处理,不做压缩:解压也一样 ...
- Linux下常见文件解压方法及命令
Linux下常见文件解压方法及命令时间:2007-01-08 18:34来源:CSDN作者:bitsCN编辑字体:[大 中 小]1.以.a为扩展名的文件: #tar xv file.a 2.以.z为扩 ...
- 4核a5中断linux,Cortex A5 MPcore寄存器TPIDRPRW复位值不为零,造成Linux Kernel不能启动的问题...
问题现象: Cortex A5 MPcore寄存器TPIDRPRW复位值不为零,造成Linux Kernel不能启动的问题. 问题原因分析: 由于Linux Kernel内核配置使能了CONFIG_T ...
- 解压文件到服务器是什么意思,linux中zip文件解压命令是什么
linux中zip文件解压命令是什么 发布时间:2020-10-15 14:35:15 来源:亿速云 阅读:102 作者:小新 这篇文章给大家分享的是有关linux中zip文件解压命令是什么的内容.小 ...
- 解压报错 你需要从上一压缩卷启动解压命令以便解压 解决方案及WinRAR怎么分卷压缩详解
一.解决方案: 1.问题描述: 解压的时候报错,提示"你需要从上一压缩卷启动解压命令以便解压" 2.解决: 会出现这个问题,是因为你正在解压的文件为分卷压缩生成的压缩包.首先你要确 ...
- Linux下常用压缩 解压命令和压缩比率对比
https://www.cnblogs.com/joshua317/p/6170839.html Linux下常用压缩 解压命令和压缩比率对比 常用的格式有: tar, tar.gz(tgz), ta ...
- 【Linux】压缩与解压zip
[Linux]压缩与解压zip 1.背景 2.zip压缩 3.unzip解压 1.背景 zip是工作中最常见的一种压缩格式. 本博客介绍在linux下的使用. 2.zip压缩 打印zip的使用说明: ...
- 浅谈Linux下各种压缩 解压命令和压缩比率对比
Linux下压缩.解压命令五花八门,不像在windows下一个winrar打遍天下无敌手,清一色的.rar .zip格式. 比如,Linux下常用的tar tar.gz tar.bz2 .Z等等不一而 ...
- Arch Linux下解决zip解压乱码的方法
Arch Linux下解决zip解压乱码的方法 完全转载于一个大佬的论坛发帖,感觉很有用但没有搜到CSDN的相关文章所以转过来,瑟瑟发抖 安装unarchiver,用unar解压zip文件.(给kde ...
最新文章
- 暑期集训1:C++STL 例2:UVA-10935
- 收集的网络上大型的开源图像处理软件代码(提供下载链接)
- Android中Handler的使用
- Linq to sql和lambda
- 课堂练习——最大联通之数组
- 服务器升级内存跟cpu之后性能更差,云服务器cpu重要还是内存重要
- 关于python import的sys.path路径问题
- 性能测试界“网红”云性能测试服务,了解一下?
- php报错提醒,php报错问题
- 计算机表格怎么加减乘除,如何在Word表格中进行加减乘除
- [Java] ArrayList、LinkedList、Vector的区别
- 提醒:安装MS11-100 .NET Framework高危漏洞补丁一定要所有服务器一起安装
- 【转】Pycharm的激活
- RHEL6.5 部署DNS服务器
- 工业AI落地场景案例实战,飞桨EasyDL让工业更智能
- 基于图像的三维重建——针孔相机模型(1)
- 总结HTMLT5高级的新特性
- BTC txid与vote的关系
- centos8 免密登录
- python设置刻度间隔不等_Matplotlib绘图遇到时间刻度就犯难?现在,一次性告诉你四种方法...
热门文章
- Python毕业设计选题推荐
- Win10怎么隐藏任务栏时间 如何看不到右下角时间
- stm32L1151用cube配置ADC
- Autcad 2020,2019 一键安装64位破解版
- goim 架构与定制
- go每日新闻(2021-12-01)——Go 1.18新特性前瞻:原生支持Fuzzing测试
- 服务器主板准系统怎么拆,【技嘉B85评测】主板准系统及电源装箱步骤完成-中关村在线...
- 神经科学(第三版)书籍,神经系统相关书籍
- selenium打开浏览器后闪退解决
- JS返回前一页(或关闭本页面,返回首页)