我们如何确定 L2 页表的基地址?(使用 ARM Cortex-A9)
例如,如果我有一个需要 7KB 数据空间并从地址 0x0 开始的程序,我需要两页 4KB。为此,我在 L1 页表中添加了一个指向 L2 页表基地址的条目。然后我像这样在 L2 页表中添加两个条目(第一页的 addr = 0x0 和第二页的 0x1000)
u32 *ptr;
u32 small_page;
small_page = addr / 0x1000;
ptr = small_page + L2_table_base_addr;
*ptr = (addr & 0xFFFFF) | attributes;
现在有一件事我还是不明白。如何确定 L2 页表基地址?我应该把表格放在 L1 页表之后吗?
我在哪里可以存储地址?我知道 L1 页表的基地址存储在协处理器寄存器中,但我没有找到任何寄存器来存储 L2 基地址。
另一个需要确定的问题是,协处理器寄存器 TTBR0 和 TTBR1 都保存 L1 页的基地址。各有各的。L1 不是 TTBR0,L2 不是 TTBR1,是吗?