Всем привет. Столкнулся с проблеммой в MMU.
Дано: По моей идее я хочу разбить виртуальную память на куски по 32МБ. Разбиваю, естественно, привязывая к реальной памяти. Настраиваю следующим образом: Ставлю привелегированный режим, Запрещаю MMU, Заполняю Таблицы трансляций L1 и L2, Устанавливаю адрес таблицы трансляции L1 (с учетом кратности), Устанавливаю домены, Ставлю защиту ROM, Ставлю защиту Системы (в контрол регистре 1 ставлю бит 8), Разрешаю MMU, Разрешаю оба кэша.
Задача: Установить FCSE_Pid, но Далее самое странное. Пытаюсь установить FCSE_Pid в отличное от нуля значение и когда я смотрю этот FCSE_Pid, то там по прежнему нуль. Однако когда я меняю MMUTraceProcessIdentifierReg, то он благополучно меняется на любое число. PC тоже не меняется от моих манипуляций. Хотя я не уверен, что он вообще должен меняться. Всё это делается в привилигированном режиме.
Следующий эксперимент: 1. Всё вышеописанное пробую в режимах Supervisor, System(изначально). Результат тот же. 2. Если пытаюсь выставить USER режим и манипулировать CP15, то сразу падаю в 0x4. Всё ок.
Подскажите пожалуйста, может быть я не правильно понимаю смысл этого CP15 c13? По моему мнению его должен использовать проц PID+adress[32МБ]...
|