设置阶段2转换表ARMv8

设置阶段2转换表ARMv8,arm,hypervisor,mmu,armv8,Arm,Hypervisor,Mmu,Armv8,我正在使用从EL2开始的小型/基本裸机虚拟机监控程序设置,然后切换到EL1 我的MMU设置(使用阶段1翻译)正在运行。例如,下面是设置表的代码段 ``` uint64_t *l1_table = ((load_addr) + SZ_1M); #if 1 /* Only one table (which is at level 1) is used, that just shows * with one table we can map 1GB of address space

我正在使用从EL2开始的小型/基本裸机虚拟机监控程序设置,然后切换到EL1 我的MMU设置(使用阶段1翻译)正在运行。例如,下面是设置表的代码段

```
uint64_t *l1_table = ((load_addr) + SZ_1M);

#if 1
    /* Only one table (which is at level 1) is used, that just shows
     * with one table we can map 1GB of address space, where VA == PA
     */
    l1_table[0] =   (uint64_t)0x0000000;
    l1_table[0] |= PT_BLOCK | PT_KERNEL | PT_AF;
    l1_table[0] |= (MT_DEVICE << 2);

    l1_table[1] = (uint64_t)0x40000000;
    l1_table[1] |= PT_BLOCK | PT_AF | PT_KERNEL;
    l1_table[1] |= (MT_NORMAL << 2);
#endif
```
uint64_t*l1_表=((加载地址)+SZ_1M);
#如果1
/*仅使用一个表(位于级别1),仅显示
*通过一个表,我们可以映射1GB的地址空间,其中VA==PA
*/
l1_表[0]=(uint64_t)0x0000000;
l1_表[0]|=PT_块| PT_内核| PT_AF;

l1_表[0]|=(MT_设备“…我想使用上述设置进行第2阶段翻译的第1阶段。”-这意味着什么?如果MMU条目包含解析虚拟地址的物理地址或继续搜索的子表地址,则MMU条目具有标志。您不能使用相同的阶段1来处理状态2@user3124812,我更正了该语句。您指的是哪个MMU条目标志?“长描述符级别1和级别2描述符格式”,描述符位[1]标识描述符类型,并将其编码为:
0,Block描述符提供内存块的基址和该内存区域的属性。
1,Table描述符提供下一级转换表的地址,对于阶段1转换,提供该转换的一些属性。
。您可以它们具有指定地址的条目或描述级别2的条目table@user3124812,是否有第2阶段翻译表设置的示例(一些基本的虚拟机监控程序)?所有EL的翻译表描述符都是相同的。我不知道示例,但ARMv8参考手册对此有详细的描述(即使有图片)