Linux Kernel 5.10 aarch64体系对TTBR寄存器的设置
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寄存器的设置相关推荐
- 华为在 Linux Kernel 5.10 中代码贡献排名第一,中国 AI 足球队夺冠 | 开发者周刊
整理 | 梦依丹 出品 | CSDN(ID:CSDNnews) CSDN开发者周刊:只为传递"有趣/有用"的开发者内容! 本周热门项目 0.国人抢茅台项目霸榜 Github 近日, ...
- linux 升级内核为4.10,Linux Kernel 4.10.4 发布下载
知名 Linux 内核维护员 Greg Kroah-Hartman 已经在邮件列表中宣布了 Linux 4.10 的第四个维护更新,并且建议所有 Linux 发行版用户更新至该最新稳定版内核. lkm ...
- Linux kernel 3.10内核源码分析--进程上下文切换
一.疑问 进程调度时,当被选中的next进程不是current进程时,需要进行上下文切换. 进行上下文切换时,有一些问题不太容易理解,比如: 1.进程上下文切换必然发生在内核态吗? 2.上下文切换后原 ...
- Linux Kernel 3.10内核源码分析--块设备层request plug/unplug机制
一.基本原理 Linux块设备层使用了plug/unplug(蓄流/泄流)的机制来提升IO吞吐量.基本原理为:当IO请求提交时,不知直接提交给底层驱动,而是先将其放入一个队列中(相当于水池),待一定时 ...
- Linux kernel 3.10内核源码分析--TLB相关--TLB概念、flush、TLB lazy模式
一.概念及基本原理 TLB即Translation Lookaside Buffer,是MMU中的一种硬件cache,用于缓存页表,即缓存线性地址(虚拟地址)到物理地址的映射关系. 如果没有TLB,那 ...
- Linux kernel 3.10内核源码分析--slab原理及相关代码
1.基本原理 我们知道,Linux保护模式下,采用分页机制,内核中物理内存使用buddy system(伙伴系统)进行管理,管理的内存单元大小为一页,也就是说使用buddy system分配内存最少需 ...
- Linux kernel 3.10内核源码分析--进程退出exit_code
进程退出时,有相应的exit_code,可用于判断进程退出的原因. 比如,waitpid()接口用于等待进程退出,此时被等待退出的进程的返回值比较重要,需要用其来判断进程退出的相应状态,而这就是通过进 ...
- Linux批量添加10个用户stu01,stu02....stu10,并设置8位随机密码
批量创建10个用户stu01-stu10,并且设置随机8位密码,要求:不能用shell循环(例如:for,while等),只能用linux命令及管道实现. 此题考察的是基础命令的熟练运用,因此,限制了 ...
- 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处.该维护补丁对驱动进行了常规升级,此外还对架构和文件系统进行了一些改善 ...
最新文章
- 私钥设置_私钥忘了怎么办,还能找回来吗?能
- oracle anbob,Tag Archives: oracle安装 | ANBOB
- 干货 | 第六期课程回顾遗传病基因检测和解读
- Mock和Java单元测试中的Mock框架Mockito介绍
- jbpm系列之五--使用decision节点判断分支情况
- win7下删除提示没权限删除文件的方法
- T-SQL 操作文件 具体解释
- linux重启docker镜像都没了,linux – 没有响应的Docker命令挂起
- ubuntu下eclipse搭建安卓开发环境
- matlab multisim,清华大学出版社-图书详情-《仿真软件教程——Multisim和MATLAB》
- 计算机网络(第七版)谢希仁
- ERP(企业资源计划)
- SSM框架整合环境搭建
- pacman 查询_pacman命令
- 查看USB设备序列号的一些方法
- HackTheBox - Unified
- 推荐系统论文源码笔记——依次学习之DKN源码笔记
- win10定时关机怎么设置
- 简单的数据结构介绍(栈、队列、数组、链表、红黑树)
- [激光原理与应用-45]:《焊接质量检测》-2- 常见焊接缺陷与检验方法