Я пытаюсь увидеть содержимое регистра кеша и статус грязного бита в с7 до и после очистки D кеша.Эта ссылка:
https://developer.arm.com/docs/ddi0198/latest/programmers-model/register-descriptions/cache-operations-register-c7 говорит, что «Если в кеше содержатся грязные строки, бит 30 устанавливается в 0. Если в кеше нет грязных строк, бит 30 устанавливается в 1».У меня есть переменная c7Value, инициализированная 15 (Случайное число)
"tc_loop: \n"
"MRC p15, 0, %[c7Value], c7, c10, 3 \n" //Read value of c7 after cleaning
"BNE tc_loop \n"
:[c7Value] "=r"(c7Value)
);
Когда я печатаю значение c7Value после вышеуказанного цикла, значение обнуляется.Я думал, что только 30-й бит будет установлен в 0, если он найдет какую-либо строку кэша грязной.
Кроме того, есть ли способ просто прочитать содержимое с7 без очистки?
Другие регистры, такие как c1, могут читаться как: «MRC p15, 0, R1, c1, C0, 0», но нет инструкции для чтения c7.
Поэтому, может, кто-нибудь подскажет, пожалуйста, знаете, как распечатать содержимое кеша и / или прочитать содержимое c7 (для проверки грязного состояния)?