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