这次学习一下高速缓存icache的功能的开关。
创新互联建站服务项目包括北湖网站建设、北湖网站制作、北湖网页制作以及北湖网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,北湖网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到北湖省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!首先巩固一下这个mrc指令
MRC 指令的格式为:
MRC{
如 mrc p15 , 0 , r0 , c1 , c0 , 0 ;
cp15是用于系统存储管理的协处理器,对于CP15寄存器来说协处理器操作码1永远为0,否则结果不可预知。
cp15中的C1寄存器存放了高速缓存的控制功能,所以我们要通过写这个协处理器寄存器里面的位,来启用icache高速缓存。
C1寄存器的各个位说明以及应用:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16~31
M A C W P D L B S R F Z I V RR L4 SBZP/UNP
各个位的作用和含义:
M:禁止/使能MMU或者MPU(0:禁止MMU或者MPU,1:使能MMU或者MPU)(如果系统中没有MMU或者MPU,读取时该位返回0,写入时忽略)
A:对于可以选择是否支持内存访问时地址对齐检查的系统,本位禁止/使能地址对齐检查功能(0:禁止地址对齐检查功能,1:使能地址对齐检查功能)(对寄存器进行写操作时,忽略该位)
C: 当数据Cache和指令Cache分开时,本控制位禁止/使能数据Cache。当数据Cache和指令Cache统一时,该控制位禁止/使能整个Cache.(0:禁止Cache, 1:使能Cache)
W:禁止/使能写缓存(0:禁止写缓存,1:使能写缓存)
P:对于向前兼容26位ARM处理器,本控制位控制PRGC32控制信号(0:异常中断处理程序进入32位地址模式,1:异常中断处理程序进入26位地址模式)
D:对于向前兼容26位ARM处理器,本控制位控制DATA32控制信号(0:禁止26位地址异常检查,1:使能26位地址异常检测)
L:对于ARMv3及以前版本,本控制位可以控制处理器的中止模式(0:选择早期中止模式,1:选择后期中止模式)
B: 对于存储系统同时支持大/小端(big-endian/little-endian)的ARM处理器,该控制位配置系统使用哪种内存模式
S:支持MMU的存储系统中,本控制位用作系统保护
R:支持MMU的存储系统中,本控制位用作ROM保护
F:本控制位由生产厂商定义
Z:对于支持跳转预测的ARM系统,本控制位禁止/使能跳转预测功能(0:禁止跳转预测功能,1:使能跳转预测功能)
I:当数据Cache和指令Cache是分开的,本控制位禁止/使能指令Cache(0:禁止指令Cache ,1:使能指令Cache)
我们要写它的第I位,也就是第bit12位
bic指令的用法:bic是位清除的指令,把操作数中为1的位对应位置的数(寄存器中)变为0,然后再放到那个寄存器里去。
比如 bic r0 ,r0 ,0xF0000000 意思就是把r0高四位的值清零,然后再放回r0寄存器中。
orr指令则相反,把操作数中为1的位对应位置的数(寄存器中)变为1,然后再放到那个寄存器里去。
//下面就是开/关icache的汇编程序
mrc p15,0,r0,c1,c0,0;
//bic r0, r0, #(1<<12)// bit12 置0 表示关上icache
orr r0, r0, #(1<<12)// bit12 置1 表示开启icache
mcr p15,0,r0,c1,c0,0;
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。