在arm64上的线性映射区还是可以通过__virt_to_phys 来将虚拟地址转成物理地址,我们来看看其在arm64上的实现
#define __virt_to_phys(x)   __virt_to_phys_nodebug(x)
#define __is_lm_address(addr)   (!(((u64)addr) & BIT(vabits_actual - 1)))#low memory的虚拟地址到物理转换
#define __lm_to_phys(addr)  (((addr) & ~PAGE_OFFSET) + PHYS_OFFSET)
#kernel image(包含text段等)映射在vmalloc 区域的虚拟地址到物理地址的转换
#define __kimg_to_phys(addr)    ((addr) - kimage_voffset)#从这里可以看出在arm64上,线性映射段一共有两块,一块是大家熟悉的low memory
一块是kernel image 映射所在的vmalloc。也就是说vmalloc 在arm64 中针对kernel image 是
线性映射的。
#define __virt_to_phys_nodebug(x) ({                    \phys_addr_t __x = (phys_addr_t)(__tag_reset(x));      \__is_lm_address(__x) ? __lm_to_phys(__x) : __kimg_to_phys(__x);    \
})那这个kimage_voffset是在head.s 中赋值的
SYM_FUNC_START_LOCAL(__primary_switched)adrp    x4, init_thread_unionadd    sp, x4, #THREAD_SIZEadr_l   x5, init_taskmsr    sp_el0, x5          // Save thread_infostr_l    x21, __fdt_pointer, x5      // Save FDT pointerldr_l    x4, kimage_vaddr        // Save the offset betweensub   x4, x4, x0          // the kernel virtual andstr_l  x4, kimage_voffset, x5      // physical mappings

arm64 中的__virt_to_phys相关推荐

  1. Arm64中的异常处理

    闲话 最近优化环境中出现了多次不同种类的异常,其他文章中也有提及,为此专门去研究了一下Arm64的异常处理机制和代码,之前主要的开发和应用环境为X86,ARM接触很少,也没有机会去研究和学习,总以为不 ...

  2. ARM64中的ASID地址空间标识符

    文章目录 1. 从ARM32到ARM64 1.1 ARM32的TLB机制 1.2 ASID(地址空间标识符) 1.2.1 ARM32的TTBR0寄存器格式 1.2.2 ARM64的TTBR0寄存器格式 ...

  3. ARM64中的内存屏障指令

    内存屏障指令是系统编程中很重要的一部分,特别是在多核并行编程中.本章重点介绍内存屏障指令产生的原因.ARM64处理器内存屏障指令以及内存屏障的案例分析等内容. 18.2.1 使用内存屏障的场景 在大部 ...

  4. ARM64系统中兼容系统调用表compat_sys_call_table的定义和初始化

    在我使用的某国产ARM64笔记本上(安装的统信UOS系统), Linux内核有2个系统调用表sys_call_table和compat_sys_call_table 其中sys_call_table为 ...

  5. linux kernel中的栈的介绍

    目录 1.linux kernel中的中断irq的栈stack (1).arm32体系的irq的栈 (2).arm64体系的irq的栈 2.linux kernel中的栈stack (1).概念介绍: ...

  6. ARM64的启动过程之(二):创建启动阶段的页表

    原文地址: http://www.wowotech.net/linux_kenrel/create_page_tables.html 一.前言 本文主要描述了ARM64启动过程中,如何建立初始化阶段页 ...

  7. linux spinlock/rwlock/seqlock原理剖析(基于ARM64)

    背景 Kernel版本:4.14 ARM64处理器,Contex-A53,双核 使用工具:Source Insight 3.5, Visio 1. 概述 吹起并发机制研究的进攻号角了! 作为第一篇文章 ...

  8. arm linux内核启动过程,ARM64的启动过程之(一):内核第一个脚印

    ARM64的启动过程之(一):内核第一个脚印 作者:linuxer 发布于:2015-10-10 15:06 分类:ARMv8A Arch 一.前言 kernel的整个启动过程涉及的内容很多,不可能每 ...

  9. 一文解析linux spinlock/rwlock/seqlock原理(基于ARM64)

    说明: Kernel版本:4.14 ARM64处理器,Contex-A53,双核 使用工具:Source Insight 3.5, Visio 1. 概述 吹起并发机制研究的进攻号角了! 作为第一篇文 ...

最新文章

  1. Warning in install.packages : package ‘RGtk2’ is not available for this version of R
  2. 思科防火墙PIX ASA精华配置总结
  3. 定义一个结构体指针需要分配存储空间
  4. css实现页面文字不换行、自动换行、强制换行
  5. 动态规划-----------01背包,完全背包与多重背包
  6. C#实现winform软件开机自动启动并最小化到系统托盘
  7. php 7.1 openssl安装,介绍 php7.1 安装openssl扩展,php openssl
  8. spring-cloud搭建
  9. BZOJ 1005: [HNOI2008]明明的烦恼
  10. 忍“乳”负重,身材好的女孩子究竟有多不容易?我从科学的角度算出来了……...
  11. 【Alpha阶段】第七次scrum meeting
  12. 传奇霸业维护服务器,37传奇霸业6月21日部分区服维护计划
  13. PonyAI进军自动驾驶货运,乘用无人车历史性“小马过河”
  14. (转)UML类图与类的关系详解
  15. html5 如何打包成apk,将H5封装成android应用APK文件的几种方法
  16. @RunWith报错/SpringJUnit4ClassRunner报错或无法使用
  17. Ubuntu环境下下载Android-SDK-Linux之后使用adb连接设备报错
  18. 电信版本-中兴B860AV1.1-T-S905M-B NAND闪存 线刷救砖固件
  19. Web Polygraph 安装
  20. win10文件资源管理器默认打开我的电脑及左侧导航设置

热门文章

  1. 【论文笔记】Character-Aware Neural Language Models
  2. 快速上手!2021年字节跳动、阿里等大厂最全Android面试题,Android校招面试指南
  3. Java--依照PDF模板进行数据的填充并输出
  4. 实验整理(一)——钓鱼邮件攻击实验
  5. 阿里118道面试题合集(送答案):天猫+蚂蚁金服+阿里巴巴
  6. ubuntu环境下安装hyperledger fabric
  7. 虚拟主播合成视频使用教程
  8. JavaFX界面跳转
  9. JavaFx界面功能隐藏和禁用
  10. SQL Server(六)-Transact-SQL语言