我正在编写一个例程来在使用回写模式时将其关闭之前刷新 PowerPC750 数据缓存。
我找到了关于编程缓存的IBM 应用说明,其中包括一个刷新例程,但我对示例代码感到困惑。我认为这可能是示例中的错误,但我想我会检查一下。在清单 2 中有两个循环,其中包括“移动到下一个块”的指令。通过将 0x10 添加到当前地址来实现移动到下一个块。我原以为这是 0x20 (32) 的添加,因为我认为缓存行是 32 字节宽。谁能证实或否定我的想法?!
你似乎是对的。他们的数学在清单顶部说明:
! CTR - the number of data blocks needed to fill the cache - save it in r3
! 32K (size of cache) / 32 (bytes per block) = 0x400
他们总是将计数寄存器设置为 0x400,并指出该文档中的几个位置每个块有 32 个字节。因此,按照该数学运算,您需要增加 0x20 而不是 0x10。与任何组件一样,您绝对应该以两种方式对其进行测试,以防出现某种奇怪的硅勘误表。
在其他 SO 用户确认后,我通过电子邮件发送了应用笔记的作者。他同意 0x10 应该是 0x20 并且将来可能会更新注释。