Попытка очистить кеш данных PowerPC 750 - PullRequest
3 голосов
/ 24 августа 2009

Я пишу процедуру очистки кэша данных PowerPC750 перед его отключением при использовании режима обратной записи.

Я нашел примечание к приложению IBM о программировании кэшей, которое включает в себя процедуру сброса, но пример кода меня смущает. Я думаю, что это может быть ошибкой в ​​примере, но я решил проверить. В листинге 2 есть два цикла, которые включают и инструкцию «перейти к следующему блоку». Переход к следующему блоку достигается путем добавления 0x10 к текущему адресу. Я бы ожидал, что это будет добавление 0x20 (32), поскольку я думаю, что строки кэша имеют ширину 32 байта. Может ли кто-нибудь подтвердить или отвергнуть мое мышление?!

Ответы [ 2 ]

4 голосов
/ 25 августа 2009

После подтверждения от других пользователей SO я отправил по электронной почте автору приложения заметку. Он согласился с тем, что 0x10 должен быть 0x20, и может обновить примечание в будущем.

4 голосов
/ 24 августа 2009

Вы, кажется, правы. Их математика указана вверху списка:

! 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. Как и в случае с любой сборкой, вы должны обязательно протестировать ее в обоих случаях, если есть какие-то странные кремниевые ошибки.

...