🗒️ linux内核源码解析01–启动代码分析之汇编部分

Linux初始化过程页表建立 Linux初始化过程,会依次建立如下页表映射: 1.恒等映射:页表基地址idmap_pg_dir; 2.粗粒度内核镜像映射:页表基地址init_pg_dir; 3.fixmap映射:页表基地址为init_pg_dir,待paging_init之后为swapper_...

linux内核源码解析01–启动代码分析之汇编部分
🗒️ linux内核源码解析02–启动代码分析之固定映射

Linux初始化过程页表建立 Linux初始化过程,会依次建立如下页表映射: 1.恒等映射:页表基地址idmap_pg_dir; 2.粗粒度内核镜像映射:即上篇博文里的“第二次建立页表映射”,页表基地址init_pg_dir; 3.fixmap映射:页表基地址为init_pg_dir,待pag...

linux内核源码解析02–启动代码分析之固定映射
🗒️ linux内核源码解析03–启动代码分析之主内核页表创建

Linux初始化过程页表建立 Linux初始化过程,会依次建立如下页表映射: 1.恒等映射:页表基地址idmap_pg_dir; 2.粗粒度内核镜像映射:页表基地址init_pg_dir; 3.fixmap映射:页表基地址为init_pg_dir,待paging_init之后为swapper_...

linux内核源码解析03–启动代码分析之主内核页表创建
🗒️ linux源码解析05–ioremap原理

Linux初始化过程页表建立 Linux初始化过程,会依次建立如下页表映射: 1.恒等映射:页表基地址idmap_pg_dir; 2.粗粒度内核镜像映射:页表基地址init_pg_dir; 3.fixmap映射:页表基地址为init_pg_dir,待paging_init之后为swapper_...

linux源码解析05–ioremap原理
🗒️ linux源码解析06–常用内存分配函数kmalloc、vmalloc、malloc和mmap实现原理

1.kmalloc函数 static __always_inline void *kmalloc(size_t size, gfp_t flags) { if (__builtin_constant_p(size)) { #ifndef CONFIG_SLOB unsigned int ind...

linux源码解析06–常用内存分配函数kmalloc、vmalloc、malloc和mmap实现原理
🗒️ ARMv8‑A 架构和处理器

ARM 架构可以追溯到 1985 年,但它并没有停滞不前。相反,它从早期的 ARM 内核开始大规模发展,每一步都增加了特性 和功能: • ARMv4 及更早版本 这些早期的处理器仅使用 ARM 32 位指令集。ARMv4T ARMv4T 架构将 Thumb 16 位指令集添加到 ARM 32 位指令集。这是第一个获得广泛许可的架构。它由 ARM7TDMI®和 ARM9TDMI®处理器实现…

ARMv8‑A 架构和处理器
🗒️ ARMv8 基础知识

在 ARMv8 中,执行发生在四个异常级别之一。在 AArch64 中,异常级别决定了特权级别,类似于 ARMv7中定义的特权级别。异常级别决定特权级别,因此在 ELn 执行对应于特权PLn。类似地,具有比另一个更大的n值的异常级别处于更高的异常级别。一个数字比另一个小的异常级别被描述为处于较低的异常级别。…

ARMv8 基础知识
🗒️ ARMv8 寄存器

AArch64执行状态提供了32个在任何时间任何特权级下都可访问的64位的通用寄存器。 每个寄存器都有64位宽,它们通常被称为寄存器X0-X30。…

ARMv8 寄存器
🗒️ A64指令集学习

Armv8-A 中的指令集 Armv8-A 支持三种指令集:A32、T32 和 A64。 在AArch64执行状态下执行时使用A64指令集。它是一个固定长度的32位指令集。名称中的 “64”指的是 AArch64 执行状态对该指令的使用。它不是指内存中指令的大小。 A32 和 T32 指令集也分别称为“ARM”和“Thumb”。这些指令集在 AArch32 执行状态下执行时使用。在本指南中,我们不介绍 A32 和 T32 指令集。

A64指令集学习