WinCE Cache操作函数

作者:ARM-WinCE

OAL 中有两个和 Cache 相关的函数,一个是 OEMARMCacheMode ,另一个是 OEMCacheRangeFlush 函数,这两个函数在 ARM 处理器上是必须实现的。

OEMARMCacheMode 函数用于设置基于 ARM 处理器页表的 cache 模式,主要是设置 MMU 页表中的 C B 控制位,达到控制相应的存储空间的缓冲特性的目的。一般默认 C B 控制位都被设置为 1 ,表示对 Write-through 模式和 Write-back 模式采用 cache write buffer 技术。

函数实现如下:

LEAF_ENTRY OEMARMCacheMode

mov r0, #0x0C

 

该函数已经被实现,在 PLATFORM 目录下可以被搜索到。默认情况下将 C B 都设置为 1 ,将值保存在 r0 寄存器中。

 

 

OEMCacheRangeFlush 用于刷新某个地址范围内的 Cache TLB ,会被 WinCE 内核调用。在 OEMInit 函数被内核调用以后,内核会调用该函数刷新整个指令和数据 TLB

函数定义如下:

void OEMCacheRangeFlush(LPVOID pAddr, DWORD dwLength, DWORD dwFlags)

pAddr :要被刷新的虚拟起始地址

dwLength :被刷新的大小

dwFlags :刷新标记位,如下:

        CACHE_SYNC_WRITEBACK :写回被 cache 的数据

        CACHE_SYNC_DISCARD :写回并刷新 cache 的数据

       CACHE_SYNC_INSTRUCTIONS 刷新 所有的指令 cache 数据

       CACHE_SYNC_FLUSH_I_TLB :刷新指令 TLB

          CACHE_SYNC_FLUSH_D_TLB :刷新数据 TLB

          CACHE_SYNC_FLUSH_TLB :刷新指令和数据 TLB

          CACHE_SYNC_L2_WRITEBACK :写回二级 cache 数据

        CACHE_SYNC_L2_DISCARD :写回并刷新 二级 cache 数据

       CACHE_SYNC_ALL :做上面所有的操作

 

该函数也已经被实现,在 ”Platform/COMMON” 目录下可以搜索到。一般来说上面两个函数不需要再被实现了,我想只要知道这两个函数,了解一下就可以了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值