★★★ 个人博客导读首页—点击此处 ★★★

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 ARM32write_ats1cpr((vaddr_t)va);isb();
#ifdef CFG_WITH_LPAEpar = read_par64();par_pa_mask = PAR64_PA_MASK;
#elsepar = read_par32();par_pa_mask = PAR32_PA_MASK;
#endif
#endif /*ARM32*/#ifdef ARM64write_at_s1e1r((vaddr_t)va);isb();par = read_par_el1();par_pa_mask = PAR_PA_MASK;
#endifif (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;
}

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

  1. 【硬核】MMU是如何完成地址翻译的

    文章目录 1. 什么是虚拟内存? 2. 虚拟内存的作用 3. 虚拟内存与物理内存 3.1 CPU存取数据 3.2 物理地址常用术语 3.3 虚拟地址常用术语 3.4 页表常用术语 3.5 页命中/缺页 ...

  2. 深入了解MMU是如何完成地址翻译的?

    虚拟内存是现代操作系统中最伟大的发明之一.它为每个进程提供了一个一致的.私有的地址空间,让每个进程产生了一种自己在独享主存的错觉. 为了讲清楚MMU是如何一步一步完成地址翻译,取出数据的,本篇文章在前 ...

  3. [mmu/cache]-MMU的寄存器学习

    文章目录 1.PAR_EL1, Physical Address Register ★★★ 友情链接 : 个人博客导读首页-点击此处 ★★★ 1.PAR_EL1, Physical Address R ...

  4. [mmu/cache]-ARM MMU的学习笔记-一篇就够了

    ★★★ 个人博客导读首页-点击此处 ★★★ . 说明: 在默认情况下,本文讲述的都是ARMV8-aarch64架构,linux kernel 64位 . 相关文章 1.ARM cache的学习笔记-一 ...

  5. [mmu/cache]-ARM cache的学习笔记-一篇就够了

    ★★★ 个人博客导读首页-点击此处 ★★★ . 说明: 在默认情况下,本文讲述的都是ARMV8-aarch64架构,linux kernel 64位 . 相关文章 1.ARM MMU的学习笔记-一篇就 ...

  6. tlb cache操作系统地址翻译

    记录王道操作系统P211地址翻译题目 题目:1.有一个tlb与一个data cache 2.存储器以字节为编址单位 3.虚拟地址14位 4.物理地址12位 5.页面大小64B 6.tlb为四路组相联, ...

  7. Linux虚拟内存与线性地址翻译

    1. 虚拟内存 对于操作系统的使用者而言,内存就像是一个一排排按照从0到n被编好数字的收纳柜,每个柜子可以存放8个bit,也就是一个字节,我们将需要存放的信息切成若干个字节,放到连续的柜子中.以后我们 ...

  8. 深入理解地址翻译 CSAPP

    地址翻译, 用自己的话说一遍, 然后自己在draw.io画图理解. 术语 页表就是一个 页表条目(Page Table Entry  PTE)的数组,每一项(每个PTE)是[有效位,物理地址]. 我们 ...

  9. 端到端的地址翻译(虚拟地址是怎样取到相应高速缓存的数据的?)

    [0]写在前面-为什么需要虚拟存储器? 0.1)定义:虚拟存储器其实就是借用了磁盘地址空间,还记得当初我们安装CentOS,划分的swap 文件系统吗? 0.2)VM简化了链接和加载.代码和数据共享, ...

最新文章

  1. python学习-- for和if结合使用
  2. plsql连接oracle报错12514,plsql 登录 oracle11 12514 错误的处理方法
  3. java中初始化的顺序_Java中 初始化的先后顺序?
  4. CSS 实现隐藏滚动条同时又可以滚动
  5. 看完后完全了解 Vue 2.0 和 Vue 3.0 的区别
  6. python wmi antivirusproduct_使用python的wmi进行远程连接的时候报错
  7. Photoshop 2020 for Mac(PS 2020)中英双版
  8. 一篇详细实用的IDEA插件开发指南
  9. QTableView结构及用法
  10. 计算机函数公式 加法,excel怎样使用加法函数公式
  11. 小学生“快乐读书吧”具体要求以及推荐书目集
  12. Chmox - Mac下的CHM电子书阅读器
  13. average函数python_在Python3 numpy中mean和average的区别详解
  14. 动态规划 - 走楼梯
  15. eclipse 的RSE插件不错
  16. HTML基础知识概要面试必备
  17. uniapp生成android并调用第三方sdk的拍照进行身份证识别
  18. 断句规则 Segmentation Rule
  19. Kubernetes 管理员认证(CKA)考试笔记(一)
  20. 学习笔记:cnn 猫狗识别

热门文章

  1. 微信小程序点播插件_小程序云直播amp;云点播插件限时降价了!!!
  2. 11个三相异步电动机常见故障与维修方法。
  3. java opengl_java基于OpenGL ES实现渲染实例
  4. Py之pandas:字典格式数据与dataframe格式数据相互转换并导出到csv
  5. auto-sklearn简介
  6. Android 把第三方jar 打进java包
  7. 数据分析(排序,数据特征、平均数、方差等,累计统计,相关分析)
  8. ServletConfig对象和ServletContext对象
  9. android 图片压缩
  10. Winform 导出成Excel打印代码