在分析ARM Linux内核的内存管理的时候不小心考到了System.map有个特别的地方:

0000000c A cpu_arm926_suspend_size
c0004000 A swapper_pg_dir
c0008000 T _text
c0008000 T stext
c0008050 t __create_page_tables
c0008104 t __turn_mmu_on_loc
c0008110 t __enable_mmu
c0008140 t __fixup_pv_table
c0008180 t __vet_atags
c0008400 T __exception_text_start
c0008400 T _stext

在arch/arm/kernel/head.S有其中的定义:

#define KERNEL_RAM_VADDR (PAGE_OFFSET + TEXT_OFFSET)
#if (KERNEL_RAM_VADDR & 0xffff) != 0x8000
#error KERNEL_RAM_VADDR must start at 0xXXXX8000
#endif

#ifdef CONFIG_ARM_LPAE
/* LPAE requires an additional page for the PGD */
#define PG_DIR_SIZE 0x5000
#define PMD_ORDER 3
#else
#define PG_DIR_SIZE 0x4000
#define PMD_ORDER 2
#endif

.globl swapper_pg_dir
.equ swapper_pg_dir, KERNEL_RAM_VADDR - PG_DIR_SIZE

.macro pgtbl, rd, phys
add \rd, \phys, #TEXT_OFFSET - PG_DIR_SIZE
.endm

swapper_pg_dir涉及到很多内容,主要是用来设置内核系统页目录。

针对ARM Linux内核swapper_pg_dir简单分析相关推荐

  1. U-Boot启动流程(Linux内核)的分析

    http://www.360doc.com/content/12/0816/10/7775902_230452499.shtml     前面一段时间一直在移植U-Boot,Linux内核和构建根文件 ...

  2. U-Boot启动流程(Linux内核)的分析(写得好)

    前面一段时间一直在移植U-Boot,Linux内核和构建根文件系统,其中有些地方还不是很明白,现在回过头来,理解一下U-boot的启动流程,以及 u-Boot是如何加载引导内核启动的.这里的分析也都是 ...

  3. Linux内核源码分析--内核启动之(3)Image内核启动(C语言部分)(Linux-3.0 ARMv7) 【转】...

    原文地址:Linux内核源码分析--内核启动之(3)Image内核启动(C语言部分)(Linux-3.0 ARMv7) 作者:tekkamanninja 转自:http://blog.chinauni ...

  4. Linux内核源码分析--内核启动之(4)Image内核启动(setup_arch函数)(Linux-3.0 ARMv7)【转】...

    原文地址:Linux内核源码分析--内核启动之(4)Image内核启动(setup_arch函数)(Linux-3.0 ARMv7) 作者:tekkamanninja 转自:http://blog.c ...

  5. U-boot启动流程(Linux内核)的分析(四)

    在上一篇中分析到u-Boot启动Linux内核的函数do_bootm_linux,这一篇则着重分析,U-boot是如果一步一步启动内核的. 我们可以看到在,start_armboot()函数的最后,在 ...

  6. Linux内核汇编代码分析

    Linux内核汇编代码分析 1.vmlinux.lds.S文件分析 1.2 vmlinux.lds.S文件总体框架 1.3 代码段 1.4 只读数据段 1.5 init段 1.6 数据段 1.7 未初 ...

  7. Linux内核源代码情景分析笔记

    Linux内核源代码情景分析笔记 好吧,首先我承认我要是读者的话,这篇文章我看着也头疼,因为写的太长太泛(其主要部分集中在内存管理,进程管理,文件系统)!原本是想按自己理解的精简精简的,按照操作系统中 ...

  8. Linux内核源码分析方法—程序员进阶必备

    一.内核源码之我见 Linux内核代码的庞大令不少人"望而生畏",也正因为如此,使得人们对Linux的了解仅处于泛泛的层次.如果想透析Linux,深入操作系统的本质,阅读内核源码是 ...

  9. linux内核源码分析笔记

    一.内核源码目录结构 1.Linux 内核源代码包括三个主要部分 1)内核核心代码:包括linux内核整体架构分析笔记描述的各子系统和子模块,以及其他支撑子系统,如:电源管理.linux初始化等. 2 ...

最新文章

  1. 【译】Spring Boot 2.0 官方迁移指南
  2. Git使用汇总之工作区、暂存区、版本库
  3. java题-java运行时异常与一般异常有何异同?
  4. 最短路径Shortest Path algorithm
  5. C语言汇编-函数调用栈
  6. 病毒、蠕虫、木马学习笔记
  7. ue4 本地化要点详解
  8. C++覆盖(override)
  9. 华为PPPoE、PPP/MP、IP-Trunk配置
  10. Reducer类——hadoop
  11. :实用 FRIDA 进阶 --- objection :内存漫游、hook anywhere、抓包
  12. python爬取微信运动_如何利用Python爬取微信运动中各个好友的运动信息
  13. OpenWRT-Wifidog之利用Luci认证
  14. 完美的Python代码制作“恐龙跳一跳“小游戏【附带源码 】
  15. OllyDbg动态调试与逆向破解TraceMe.exe
  16. go语言的ini文件配置读取
  17. mysql 中字段存放表情符号,Incorrect string value: ‘\xF0\x9F\x8C\xBB‘ for column
  18. 开放存取平台以保存Odia印度语言
  19. 让人发狂的sql语句!
  20. vs2019修改代码时覆盖和插入设置

热门文章

  1. 基于GA优化算法的磁性贴片位置布置优化算法matlab仿真
  2. method ‘void android.widget.Spinner.setAdapter(android.widget.SpinnerAdapter)‘ on a null object refe
  3. 论文阅读和分析:《DeepGCNs: Can GCNs Go as Deep as CNNs?》
  4. 这些人,我关注三年了...
  5. 转 Android视频播放软解与硬解的区别
  6. Invalid options object. Dev Server has been initialized using an options object
  7. USACO fact4, spin
  8. 查分约束例题(洛古)
  9. 短视频文案如何写,学会以下几种方法,离爆款绝对不远。
  10. JavaScript语句结尾的;加不加