ARM中的预取命令pld的使用
来源:互联网 发布:网络监测基础与实战 编辑:程序博客网 时间:2024/06/03 16:39
ARM中的预取命令pld的使用
Kernel version:2.6.14
CPU architecture:ARM920T
最近在分析ARM Linux的copy_from_user,主要功能由__arch_copy_from_user实现,该函数定义在linux/arch/arm/lib/uaccess.S文件中,使用汇编实现,部分源码如下:
ENTRY(__arch_copy_from_user)stmfdsp!, {r0, r2, r4 - r7, lr}cmpr2, #4blt.cfu_not_enoughPLD(pld[r1, #0])//因为后面要用到r0和r1,所有进行预读取,加速存储器的访问PLD(pld[r0, #0])andsip, r0, #3bne.cfu_dest_not_aligned.cfu_dest_aligned:andsip, r1, #3bne.cfu_src_not_aligned...这段代码中用到了预读取指令pld(preload),大写的PLD是一个宏,其定义如下(linux/include/asm-arm/assembler.h):
#if __LINUX_ARM_ARCH__ >= 5#define PLD(code...)code#else#define PLD(code...)#endifpld,即预读取指令,pld指令只在armv5以上版本有效。使用pld指令可以提示ARM预先把cache line填充好。pld指令中的offset很有讲究。一般为64-byte的倍数。
功能:cache预读取(PLD,PreLoad),使用pld指示存储系统从后面几条指令所指定的存储器地址读取,存储系统可使用这种方法加速以后的存储器访问。
格式:pld[Rn,{offset}]
其中:
- Rn 存储器的基址寄存器。
- Offset 加在Rn上的偏移量。
- ARM中的预取命令pld的使用
- ARM中的预取命令pld的使用
- PLD
- ARM中的Ramdisk的使用
- ARM中的Ramdisk的使用
- SOC PLD SOPC CPLD FPGA 的解释
- PLD- FPGA与CPLD的区别
- ARM学习笔记(六)--ARM指令的预取和自修改代码
- Android命令行启动程序-arm命令的使用
- linux-arm间tftp命令的安装、使用
- ARM汇编中的标号使用
- 取余与取模的区别,以及在C++(C#)中的使用
- SoC, PLD, FPGA, ASIC, CPLD, SPLD 的区别
- PLD -Verilog语言中wire与reg的区别
- arm平台的反编译命令
- ARM指令预取的应用---调整DRAM的clock经典代码段
- 在arm平台使用ldd命令
- 在arm平台使用ldd命令
- Ubuntu应用推荐大全
- ios UIView详解~~~~~
- Mysql集群
- 十八年开发经历小结
- iOS UIView非常用方法及属性详解
- ARM中的预取命令pld的使用
- C语言之memcmp函数
- 关于DXImageTransform.Microsoft.AlphaImageLoader
- Hibernate性能优化
- ARP协议的报文格式
- epoll的一些思考
- .“黑监狱”截访案开审 北京法院否认宣判截访人员
- Linux内核编译选项-3
- Hibernate的四种数据加载方式