Я недавно работал с Cortex R8 (размер кеша 32k, 256sets, 4way) и сделал ошибку, прочитав размер кеша следующим образом:
// забываем выбрать d кеш, но читать размер кеша напрямую
mrc p15 1, r0, c0, c0,0
возвращает 0 в r0 означает, что размер кэша равен 0.
Затем я делаю недействительным кеш, установив / таким образом:
mcr p15 0, r2, c7, c6,2
когда значение, введенное в r2, не равно нулю, как 0x20,0x40, компьютер, похоже, прекращает извлекать инструкцию. Он НЕ работает ни при каких исключениях и не продолжает работать снова.
Итак, мой вопрос:
1) сделаем ли мы недействительным d кеш по set / way fail, если я забуду выбрать D кеш при чтении размера d кеша *
2) какие случаи в процессоре arm (armv7 наподобие R8) прекращают извлекать инструкции?
Любое предложение будет оценено.