我正在编写一个例程来刷新PowerPC750数据缓存,然后在使用回写模式时将其关闭。
我发现IBM application note编程包含刷新例程的缓存,但我对示例代码感到困惑。我认为这可能是一个错误的例子,但我想我会检查。在清单2中,有两个循环包括“移动到下一个块”的指令。通过向当前地址添加0x10来实现移动到下一个块。 我原本预计这会是0x20(32)的加法,因为我认为缓存行是32字节宽。任何人都可以确认或否定我的想法吗?!
答案 0 :(得分:4)
你似乎是对的。他们的数学表明在列表的顶部:
! 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。与任何组件一样,如果有一些奇怪的硅片勘误,你应该两种方式测试它。
答案 1 :(得分:4)
在得到其他SO用户的确认之后,我通过电子邮件发送了应用笔记的作者。他同意0x10应该是0x20并且可能在将来更新笔记。