SCTLR_EL1 – Top level system control for EL0 and EL1 SCTLR_EL2 – Top level system control for EL2 SCTLR_EL3 – Top level system control for EL3 注意:EL1 和 EL0 共享相同的 MMU 配置,并且控制仅限于在 EL1 上运行的特权代码。 因此,没有 SCTLR_EL0,所有控制都来自 EL1 可访问寄存器。
(1)、在EL0时调用svc指令,触发一个同步异常,cpu则会陷入EL1; (2)、在EL0时来了一个IRQ或FIQ,会触发一个异步异常,cpu则会陷入EL1或EL2或EL3(根据SCR寄存器中中断的配置来决定); 高级别向低级别切换是通过修改PSTATE寄存器 3、ARMV8-aarch64寄存器总结 1、通用寄存器 ARMv8有31个通用寄存器X0-X30, 还有...
IRQ、FIQ标志中断是routing到EL3是routing到ELx. 如果为1则routing到EL3 5、SCTLR_EL1, System Control Register (EL1) 在AArch64状态下,其实是有三个sctlr寄存器: SCTLR_EL1 SCTLR_EL2 SCTLR_EL3 在AArch32状态下,有HSCTLR和sctlr寄存器,其中sctlr寄存器是banked: SCTLR (NS) HSCTLR SCTLR (S) 重要的三...
EL1异常级别和EL2异常级别有各自的系统控制寄存器,即SCTLR_EL1和SCTLR_EL2,这两个寄存器的第0位是否开启MMU。未开启MMU则访存以物理内存直接寻址,开启后访存则需要经过MMU转换。EL1的设置本文不进行讲解,着重讲解EL2的设置,当EL2开启MMU后,转换所需要的转换表存储在TTBR0_EL2寄存器中。 这里注意区分后文会提到...
在ARMv7中,诸如TTBRx、VBAR和SCTLR等寄存器都采用了这种banked register的设计。然而,随着ARMv8的推出,这种设计得到了简化,许多系统寄存器都添加了ELx后缀以明确其使用范围。状态寄存器 CPSR与PSTATE 在ARMv7架构中,有CPSR的状态寄存器。而在ARMv8-32架构中,虽然CPSR依然存在,但同时引入了PSTATE寄存器。PSTATE...
虽然在异常初始化流程中已经设置了sctlr_el1等系统控制寄存器,但在打开mmu前还需要其它一些准备工作。 ... # arch/arm64/mm/proc.S /* * __cpu_setup * * Initialise the processor for turning the MMU on. * * Output: * Return in x0 the value of the SCTLR_EL1 register. */ ...
在ARMV8-aarch64架构下有三个sctlr寄存器 SCTLR_EL1SCTLR_EL2SCTLR_EL3以SCTLR_EL3,该系统寄存器的SCTLR_EL3.EE(BIT[25])定义了MMU访问页表的方式:小端方式读、还是大端方式读 (4)、Address size configuration Physical address size – 告诉cpu,当前系统的物理地址是多少位 Output address size – 告诉mmu,...
1.ARM64的异常等级 ARM64包含4个异常等级: EL0:非特权模式,常用来跑应用程序; EL1:特权模式,常用来跑内核; EL2:虚拟化监控程序,例如hypervisor; EL3:安全模式,例如secure monitor; 2.同步异常和异步异常 同步异常是由正在运行的指令,或指令运行的结果,出错造成的异常;而异步异常则不必由运行的指令造成,可以在...
每一个异常等级的端序控制通过当前异常等级的 SCTLR_ELn.SS 位域实现,而 EL0 的端序通过 SCTLR_EL1.E0E 位域控制。 4.5 改变执行状态 上文我们已经知道了只有在异常发生时或从异常返回时才能改变 CPU 执行状态, 现在我们讨论一下执行状态改变时寄存器的变化。
注意:ASID 标记在 EL2 中也可用,当 HCR_EL2.E2H==1 时 5.3. Virtual Machine Identifiers - Tagging translations with the owning VM EL0/EL1 转换也可以使用虚拟机标识符 (VMID) 进行标记。 VMID 允许来自不同 VM 的转换在缓存中共存。 这类似于 ASID 为来自不同应用程序的翻译工作的方式。 实际上,这...