2013-11-20 2 views
1

В ARMv7 VMSA MMU имеется два набора таблиц перевода, на которые указывают ttbr0 и ttbr1. Диапазон виртуального адреса, который будет использоваться для перевода либо по таблицам, на которые указывает ttbr0, либо ttbr1, задается регистром TTBCR поля «N».Блок управления памятью ARM v7 (MMU) ttbr0 и ttbr1

Теперь, если я установил этот TTBCR.N в 7, диапазон адресов, охватываемый таблицей переводов в ttbr0, равен 0x0 - 0x2000000. Таким образом, первый адрес после 0x2000000 (т. Е. 0x2000004?) Будет использовать таблицу перевода в ttbr1 для перевода. В соответствии с форматом коротких дескрипторов в ARMv7 vmsa, таблицы перевода могут иметь области разрезов (1 МБ), регионы отображения суперсекции (16 МБ).

Мой вопрос, что произойдет, если я поместил supersection в адресное место, скажем, 0x1600000. Согласно теории, тогда адрес в диапазоне от 0x1600000 до 0x2600000 будет отображаться на физический адрес 0x1600000. (Но это не сработает, так как сама таблица переводов изменяется на 0x2000000.?) Так что происходит в этом сценарии? Также что должно быть помещено при первом входе ttbr1 в этом случае?

ответ

0

Я думаю, что это ошибка программирования и таблицы страниц не должны установить, как это с адресом блока одной области, совмещенной с other.Consider это вы установили VA 0x1600000 года до 16 МБ, чтобы быть блоком 16Мб супер-раздел и скажите, что вы получаете доступ к местоположению 0x1600000, теперь ваш TLB будет иметь виртуальное физическое сопоставление для 16-мегабайтной секции, начиная с формы 0x1600000. Теперь вы говорите, что вы получаете доступ к ячейке памяти 0x2000000, здесь сначала просматривается TLB, а совпадение будет обнаружена запись, не будет ходить по страницам таблицы. Возможно, вы указали 0x2000000 на другое физическое адресное пространство, а затем такой доступ потенциально может попасть в непреднамеренное местоположение.

Смежные вопросы