ARM指令预取的应用---调整DRAM的clock经典代码段


引言

DRAM clock的调整可能会影响对DRAM的读写,所以安全的方法是将指令预读

代码如下

; First get cache infoCP15 c0中记录着该处理器的cache信息

mrc     p15, 0, r0, c0, c0, 1

; Get I cache line size as (1 << (b[1..0] + 3))

;32位的低两位表示cache line size,但是要经过前面的运算,可以为8,16,32,64字节

and     r3, r0, #3

add     r3, r3, #3

mov     r2, #1

mov     r2, r2, lsl r3

sub     r3, r2, #1

;运算后:

;r2=cache line size      r3=r2-1

; Now get first and last instruction addresses。这两个地址见代码后半部。可以理解为:

;r0= IC2START    r1= IC2END

add     r0, pc, #(IC2START - . + 8)

add     r1, pc, #(IC2END - . + 8)

; Make sure that address is cache line aligned。调整R0,使它对齐到cache line

add     r0, r0, r3

bic     r0, r0, r3

; Avoid doing too much

sub     r1, r1, #4

; Prefetch instructions。循环预取r0所指示地址的指令

60      mcr     p15, 0, r0, c7, c13, 1

        add     r0, r0, r2

        cmp     r0, r1

        bls     %B60

 

。。。

 

IC2START

;这里的nop用来适应前面IC2STARTcache line 对齐,所以填充nop

nop

        nop

        nop

        nop

        nop

        nop

        nop

        nop

        nop

        nop

        nop

        nop

        nop

        nop

        nop

        nop

        nop

        nop

        nop

        nop

        nop

        nop

        nop

        nop

        nop

        nop

        nop

        nop

        nop

;具体的DRAM clock调整

。。。

IC2END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值