Размер индексов дескриптора таблицы страниц MMU

Я пытаюсь настроить сопоставление виртуальных адресов с двумя уровнями косвенного обращения для 64-битной версии Cortex-A v8 в Baremetal. Уровень 2 таблицы страниц будет содержать дескрипторы таблиц, а уровень 3 таблицы страниц будет содержать записи блоков.

Просмотрев документацию для страниц размером 64 КБ: http://infocenter.arm.com/help/topic/com.arm.doc.den0024a/ch12s03.html#BABIIEFG

Я не понимаю, как вычисляется размер «индекса уровня 2» и «индекса уровня 3», и нужно ли мне следовать тому же пути. В этом примере таблица 2 имеет 8192 записи (поэтому необходимо 13 бит), а таблица 3 адресуется с использованием 13 бит. Можно ли изменить размер «Индекса 2-го уровня»? Как я могу узнать размер индекса, если у меня есть 3 уровня косвенности?


person Stoogy    schedule 21.06.2018    source источник


Ответы (1)


Прежде всего, вот общее описание о дизайне таблицы страниц ARMv8.

Биты индекса (9 бит, 11 бит и 13 бит) фиксированы для разных размеров страницы (4 КБ, 16 КБ и 64 КБ). Подробную информацию о битах можно найти по ссылке выше. Если вы используете трехуровневую таблицу страниц, то это должна быть гранула страницы размером 16 КБ, а соответствующие индексные биты каждого уровня равны 11.

Наконец, вот ответ, который я разместил ранее, чтобы объяснить обход таблицы страниц AArch64. Возможно, вам будет полезно понять таблицу страниц ARM.

person S.Wan    schedule 28.06.2018