enable_mmu

在启动的时候,将init_pg_dir写入到了ttbr1_el1,idmap_pg_dir写入到了ttbr0_el1

事实上在secondary_startup和cpu_resume时,我们又将swapper_pg_dir写入到了ttbr_el1

SYM_CODE_START(cpu_resume)bl init_kernel_elbl    switch_to_vhebl __cpu_setup/* enable the MMU early - so we can access sleep_save_stash by va */adrp x1, swapper_pg_dirbl    __enable_mmuldr x8, =_cpu_resumebr x8
SYM_CODE_END(cpu_resume)SYM_FUNC_START_LOCAL(secondary_startup)/** Common entry point for secondary CPUs.*/bl   switch_to_vhebl __cpu_secondary_check52bitvabl  __cpu_setup         // initialise processoradrp x1, swapper_pg_dirbl    __enable_mmuldr x8, =__secondary_switchedbr    x8
SYM_FUNC_END(secondary_startup)SYM_FUNC_START(__enable_mmu)mrs  x2, ID_AA64MMFR0_EL1ubfx    x2, x2, #ID_AA64MMFR0_TGRAN_SHIFT, 4cmp     x2, #ID_AA64MMFR0_TGRAN_SUPPORTED_MINb.lt    __no_granule_supportcmp     x2, #ID_AA64MMFR0_TGRAN_SUPPORTED_MAXb.gt    __no_granule_supportupdate_early_cpu_boot_status 0, x2, x3adrp    x2, idmap_pg_dirphys_to_ttbr x1, x1phys_to_ttbr x2, x2msr   ttbr0_el1, x2           // load TTBR0offset_ttbr1 x1, x3msr ttbr1_el1, x1           // load TTBR1isbset_sctlr_el1   x0ret
SYM_FUNC_END(__enable_mmu)

那么init_pg_dir和swapper_pg_dir有啥关系呢?

Linux Kernel 5.10 aarch64体系对TTBR寄存器的设置相关推荐

  1. 华为在 Linux Kernel 5.10 中代码贡献排名第一,中国 AI 足球队夺冠 | 开发者周刊

    整理 | 梦依丹 出品 | CSDN(ID:CSDNnews) CSDN开发者周刊:只为传递"有趣/有用"的开发者内容! 本周热门项目 0.国人抢茅台项目霸榜 Github 近日, ...

  2. linux 升级内核为4.10,Linux Kernel 4.10.4 发布下载

    知名 Linux 内核维护员 Greg Kroah-Hartman 已经在邮件列表中宣布了 Linux 4.10 的第四个维护更新,并且建议所有 Linux 发行版用户更新至该最新稳定版内核. lkm ...

  3. Linux kernel 3.10内核源码分析--进程上下文切换

    一.疑问 进程调度时,当被选中的next进程不是current进程时,需要进行上下文切换. 进行上下文切换时,有一些问题不太容易理解,比如: 1.进程上下文切换必然发生在内核态吗? 2.上下文切换后原 ...

  4. Linux Kernel 3.10内核源码分析--块设备层request plug/unplug机制

    一.基本原理 Linux块设备层使用了plug/unplug(蓄流/泄流)的机制来提升IO吞吐量.基本原理为:当IO请求提交时,不知直接提交给底层驱动,而是先将其放入一个队列中(相当于水池),待一定时 ...

  5. Linux kernel 3.10内核源码分析--TLB相关--TLB概念、flush、TLB lazy模式

    一.概念及基本原理 TLB即Translation Lookaside Buffer,是MMU中的一种硬件cache,用于缓存页表,即缓存线性地址(虚拟地址)到物理地址的映射关系. 如果没有TLB,那 ...

  6. Linux kernel 3.10内核源码分析--slab原理及相关代码

    1.基本原理 我们知道,Linux保护模式下,采用分页机制,内核中物理内存使用buddy system(伙伴系统)进行管理,管理的内存单元大小为一页,也就是说使用buddy system分配内存最少需 ...

  7. Linux kernel 3.10内核源码分析--进程退出exit_code

    进程退出时,有相应的exit_code,可用于判断进程退出的原因. 比如,waitpid()接口用于等待进程退出,此时被等待退出的进程的返回值比较重要,需要用其来判断进程退出的相应状态,而这就是通过进 ...

  8. Linux批量添加10个用户stu01,stu02....stu10,并设置8位随机密码

    批量创建10个用户stu01-stu10,并且设置随机8位密码,要求:不能用shell循环(例如:for,while等),只能用linux命令及管道实现. 此题考察的是基础命令的熟练运用,因此,限制了 ...

  9. linux mint 19 内核4.9,Linux Kernel 4.4.59 LTS/4.9.19 LTS/4.10.7维护版本更新发布

    Linux Kernel 4.10.7版本同此前版本更新相隔3天时间,根据短日志共计调整128个文件,插入1470处,删除845处.该维护补丁对驱动进行了常规升级,此外还对架构和文件系统进行了一些改善 ...

最新文章

  1. 私钥设置_私钥忘了怎么办,还能找回来吗?能
  2. oracle anbob,Tag Archives: oracle安装 | ANBOB
  3. 干货 | 第六期课程回顾遗传病基因检测和解读
  4. Mock和Java单元测试中的Mock框架Mockito介绍
  5. jbpm系列之五--使用decision节点判断分支情况
  6. win7下删除提示没权限删除文件的方法
  7. T-SQL 操作文件 具体解释
  8. linux重启docker镜像都没了,linux – 没有响应的Docker命令挂起
  9. ubuntu下eclipse搭建安卓开发环境
  10. matlab multisim,清华大学出版社-图书详情-《仿真软件教程——Multisim和MATLAB》
  11. 计算机网络(第七版)谢希仁
  12. ERP(企业资源计划)
  13. SSM框架整合环境搭建
  14. pacman 查询_pacman命令
  15. 查看USB设备序列号的一些方法
  16. HackTheBox - Unified
  17. 推荐系统论文源码笔记——依次学习之DKN源码笔记
  18. win10定时关机怎么设置
  19. 简单的数据结构介绍(栈、队列、数组、链表、红黑树)
  20. [激光原理与应用-45]:《焊接质量检测》-2- 常见焊接缺陷与检验方法

热门文章

  1. php和mysql的版本区别_MySQL各个版本区别_MySQL
  2. 全球规模最大的全浸没式液冷数据中心落户杭州余杭
  3. 2020年数据中心值得关注的8大趋势
  4. Linux之apt-get:apt-get的简介、安装、使用方法之详细攻略
  5. 密码检验规则(字母数字和特殊字符组成的混合体)
  6. 【转载】IIS网站配置不带www域名直接跳转带www的域名
  7. window 日志清除
  8. 初识java-循环结构(二):6
  9. Tornado源码分析 --- 静态文件处理模块
  10. EXT4.2--Ext Designer 使用