Я пишу голый металлический код (без ОС) для процессора ARM Cortex A9.(ARM ASSEMBLY) MSR CPSR_C, # 0x13 не работает
Мне нужно прочитать регистр, доступный только в режиме супервизора (многопроцессорный регистр сродства, MPIDR).
Когда я вхожу в пользовательский режим и пытаюсь выполнить следующую инструкцию (для входа в режим супервизора) шаг за шагом с отладчиком, ничего не происходит.
MSR CPSR_C, #0x13
И моя программа переходит к неопределенному режим, если я пытаюсь читать MPIDR регистр
Пожалуйста, вы знаете, что я не хватает?
Когда я использую окна отладчика и заставляю пять первых бит регистра CPSR на b10011, он работает, я иду к супервизору.
Вы уверены, что письмо на 'CPSR_C' не является привилегированной операцией? Это не имеет большого смысла для защиты вещей, если нарушение защиты - это просто ... – unwind
Я не уверен, когда я вступаю с отладчиком и перехожу в режим irq, а затем выполняю ту же инструкцию, это работает. – bonpiedlaroute
, но если это привилегированная операция, как я могу это сделать, чтобы войти в режим супервизора, исходящий из пользовательского режима, это невозможно? – bonpiedlaroute