(ZT)TLB 操作

TLB 的操作是通过访问 CP15 C8 C10 寄存器来完成的,写 CP15 C8/C10 寄存器的指令格式如下所示:

mcr p15, 0, , , crm,

mcr p15, 0, , , crm,

4.6.1   使 TLB 内容 无效

使 TLB 中的内容无效是通过写 CP15 的寄存器 C8 来实现的,指令如表 4-9 所示。

4-9  使 TLB 内容无效操作指令

   

   

mcr p15, 0, rd, c8, c7, 0

0b000

0b0111

0

使整个统一 cache 或整个数据和指令 cache 无效

mcr p15, 0, rd, c8, c7, 1

0b001

0b0111

虚拟地址

使统一 cache 中的单个地址变换条目无效

mcr p15, 0, rd, c8, c5, 0

0b000

0b0101

0

使整个指令 cache 无效

mcr p15, 0, rd, c8, c5, 1

0b001

0b0101

虚拟地址

使指令 cache 中的单个地址变换条目无效

mcr p15, 0, rd, c8, c6, 0

0b000

0b0110

0

使整个数据 cache 无效

mcr p15, 0, rd, c8, c6, 1

0b001

0b0110

虚拟地址

使数据 cache 中的单个地址变换条目无效

4.6.2   锁 定 TLB 内容

锁定 TLB 是通过写 CP15 的寄存器 C10 来实现的。

锁定 TLB N 条地址变换条目的操作步骤说明如下:

1 )确保在整个锁定过程中不会产生异常中断, 可以通过禁止中断等方法实现;

2 )如果锁定的是指令 TLB 或者统一的 TLB ,将 base=N victim=N P=0 写入 C10

3 )使整个将要锁定的 TLB 无效;

4 )如果想要锁定的是指令 TLB ,确保与锁定过程所涉及的指令相关的 地址变换条目已经加载到指令 TLB 中;如果想要锁定的是数据 TLB ,确保与锁定过程所涉及的数据相关的地址变换条目已经加载到指令 TLB 中;如果系统使用的是统一的数据 TLB 和指令 TLB ,上述两条都要保证;

5 )对于 I=0 N-1 ,重复执行下面操作:

base=i victim=i P=1 写入寄存器 C10 ,将每一条想要锁定到快表中的地址变换条目读取到快表中。对于数据 TLB 和统一 TLB 可以使用 ldr 指令读取一个涉及该地址变换条目的数 据,将该地址变换条目读取到 TLB 中。对于指令 TLB ,通过操作寄存器 C7 ,将相应的地址变换条目读取到指令 TLB 中;

6 )将 base=N victim=N P=0 写入寄存器 C10

4.6.3   解 除 TLB 中被锁定的地址变换条目

解除 TLB 中被锁定的地址变换条目,可以使用以下操作步骤:

1 )通过操作寄存器 C8 ,使无效 TLB 中被锁定的地址变换条目;

2 )将 base=0 victim=0 P=0 写入 C10 寄存器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值