Я провожу некоторые эксперименты с устройством ARM Cortex A-8, работающим под ядром Linux.
Я могу получить доступ и прочитать значение регистра блокировки кэша L2 без проблем:
asm volatile ("mrc p15, 1,% 0, c9, c0, 0": "= r" (i));
Когда я пытаюсь записать значение обратно, устройство сразу вылетает:
asm volatile ("mcr p15, 1,% 0, c9, c0, 0":: "r" (i));
Код работает как модуль ядра, поэтому проблем с разрешениями нет.
Интересно, не пропустил ли я что-то особенное перед записью этого значения регистра?