[mmu/cache]-MMU的地址翻译(Address translation)指令介绍

快速链接:
.
👉👉👉 个人博客笔记导读目录(全部) 👈👈👈

在这里插入图片描述

Address translation system instructions

AT指令的语法格式:
在这里插入图片描述
有了上面的语法格式后,就非常好理解armv8的MMU提供了14条AT指令了:
在这里插入图片描述
MMU的地址翻译一般都是自动进行的,在当前的linux kernel(kernel-4.14)中还真找不到使用AT指令的代码。而在optee中是可以找到一个示例的,如下:


static bool arm_va2pa_helper(void *va, paddr_t *pa)
{
        uint32_t exceptions = thread_mask_exceptions(THREAD_EXCP_ALL);
        paddr_t par;
        paddr_t par_pa_mask;
        bool ret = false;

#ifdef ARM32
        write_ats1cpr((vaddr_t)va);
        isb();
#ifdef CFG_WITH_LPAE
        par = read_par64();
        par_pa_mask = PAR64_PA_MASK;
#else
        par = read_par32();
        par_pa_mask = PAR32_PA_MASK;
#endif
#endif /*ARM32*/

#ifdef ARM64
        write_at_s1e1r((vaddr_t)va);
        isb();
        par = read_par_el1();
        par_pa_mask = PAR_PA_MASK;
#endif
        if (par & PAR_F)
                goto out;
        *pa = (par & (par_pa_mask << PAR_PA_SHIFT)) |
                ((vaddr_t)va & ((1 << PAR_PA_SHIFT) - 1));

        ret = true;
out:
        thread_unmask_exceptions(exceptions);
        return ret;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arm精选

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值