Вам, конечно, не нужно отключать домены в реестре контроля доступа к домену. На самом деле это даже невозможно, так как доступ к домену всегда проверяется, если MMU включен. Что вы действительно делаете, загружая значения в DACR, так это устанавливаете права доступа для доменов. На странице вы разместили ссылку, чтобы точно описать значение битов в DACS. В общем:
- 00 - нет доступа вообще
- 01 - доступ проверен против значений в записи TLB
- 11 - доступ всегда разрешен
Это означает, что запись 0xFFFFFFFF в DACR отключает защиту памяти. Это именно то, что делает код, который вы опубликовали. Обратите внимание на инструкцию mvn
, она отличается от mov
. mvn <Rd>, <Rm>
- это инструкция "Move NOT", она записывает дополнение от <Rm>
до <Rd>
. После mvn r1, #0
значение r1
равно 0xFFFFFFFF.
Код запуска, с которым вы столкнулись, вероятно, не нуждается в защите памяти или временно отключает его, чтобы включить его позже. Тем не менее, это не какое-либо правило, согласно которому вы всегда должны разрешать полный доступ ко всем доменам.