当前位置: 首页 > news >正文

【u-boot】重定位(ARM32)-relocate_code

本文基于u-boot版本2016.03

一、开篇

relocate_code实现在/arch/arm/lib/relocate.S中,汇编代码如下:

ENTRY(relocate_code)ldr	r1, =__image_copy_start	/* r1 <- SRC &__image_copy_start */subs	r4, r0, r1		/* r4 <- relocation offset */beq	relocate_done		/* skip relocation */ldr	r2, =__image_copy_end	/* r2 <- SRC &__image_copy_end */copy_loop:ldmia	r1!, {r10-r11}		/* copy from source address [r1]    */stmia	r0!, {r10-r11}		/* copy to   target address [r0]    */cmp	r1, r2			/* until source end address [r2]    */blo	copy_loop/** fix .rel.dyn relocations*/ldr	r2, =__rel_dyn_start	/* r2 <- SRC &__rel_dyn_start */ldr	r3, =__rel_dyn_end	/* r3 <- SRC &__rel_dyn_end */
fixloop:ldmia	r2!, {r0-r1}		/* (r0,r1) <- (SRC location,fixup) */and	r1, r1, #0xffcmp	r1, #23			/* relative fixup? */bne	fixnext/* relative fix: increase location by offset */add	r0, r0, r4ldr	r1, [r0]add	r1, r1, r4str	r1, [r0]
fixnext:cmp	r2, r3blo	fixlooprelocate_done:#ifdef __XSCALE__/** On xscale, icache must be invalidated and write buffers drained,* even with cache disabled - 4.2.7 of xscale core developer's manual*/mcr	p15, 0, r0, c7, c7, 0	/* invalidate icache */mcr	p15, 0, r0, c7, c10, 4	/* drain write buffer */
#endif/* ARMv4- don't know bx lr but the assembler fails to see that */#ifdef __ARM_ARCH_4__mov	pc, lr
#elsebx	lr
#endifENDPROC(relocate_code)

查看u-boot汇编如下:

img

从上述汇编可知,relocate_co

http://www.dtcms.com/a/541390.html

相关文章:

  • Java Web 开发的核心组件:Servlet, JSP,Filter,Listener
  • 怎么做qq分享网站深圳中瑞建设集团官方网站
  • 20251028在荣品RD-RK3588-MID开发板的Android13系统下解决关机的时候最近打开的应用不关的问题
  • 网站建设功能套餐表怎样创建网站桌面快捷方式
  • 当 Claude Code 登陆浏览器:我们如何用 Gateone.ai 把“移动编码”从炫技变成生产力核弹
  • Labview多种通信集合
  • 炫酷文字制作网站网站建设最快多长时间
  • 【自然资源】宅地基误划为永久基本农田怎么办?
  • Python:批量下载已知gene symbol蛋白的PDB文件
  • 废旧台式机变身私有NAS
  • 探索Agent工具调用时的高熵时刻
  • c 转网站开发电脑培训网上培训班
  • 2022/07 JLPT听力原文 问题四
  • 互联网网站运营网站建设博客作业
  • 破解多数据库并存难题!电科金仓异构多活架构铸就安全底座
  • 网站在线解压小程序入口qq浏览器
  • 中国工程项目网站网站模版带后台
  • JavaWeb后端-MySQL
  • sherpa-onnx实现ASR(语音转文字)和 TTS(文字转语音)
  • 怎么进入国外网站一些有趣的网站
  • 树莓派 ADS1263 各种库程序
  • 基于NodeJs实现一个MCP客户端(会话模式和无会话模式)
  • 小迪安全v2023学习笔记(一百三十九讲)—— Linux系统权限提升篇Vulnhub辅助项目SUID权限SUDO指令版本漏洞
  • 《电子工程师基础篇:全面解析电容分类、核心MLCC与选型参数》
  • opencv学习笔记7:对mnist数据集分类
  • 房地产公司网站建设报价方案涂料网站模板
  • 深圳手机网站网站恶意点击
  • 网站优化搜索东莞企业网络推广运营技巧
  • 网站关键词怎么设置莲塘网站建设
  • 跨院区数据不通、停机风险高?浙人医靠电科金仓多活架构破信创难题