接着将cptr_el3清零,使用xzr是可以快速操作寄存器为零。这里保证任何级别下访问SIMD和floating-point指令不会导致触发异常陷入el3。 当处于EL2时,首先根据HCR_EL2.E2H判断系统是一个虚拟机管理器还是主机系统,当E2H = 0时,表示系统处于主机系统只需要做el3一样的操作配置SIMD和FP指令不会陷入el2即可。 当系统处...
实际上,即便是由于SOC支持TrustZone而导致cpu core上电后进入EL3,这时候,接管cpu控制的一定不是linux kernel(至少目前来看linux kernel不会做Secure monitor),而是Secure Platform Firmware(也就是传说中的secure monitor),它会进行硬件平台的初始化,loading trusted OS等等,等到完成了secure world的构建之后,把控制权转...
定义额外可用的memory,给后面每个BL的加载使用 加载Image load_scp_bl2,(separate System Control Processor) load_bl31,EL3 Runtime Software image load,从存储设备加载到trusted SRAM 通过提升SMC将控制回到BL1,将BL31的入口提供给BL1 BL1关闭MMU,并通过清除SCTLR_EL3.M/I/C,冲掉data cache BL1将控制转给BL...
ARMV8把之前架构中的processor mode的概念去掉(或者说淡化),取而代之的是4个固定的Exception level,分別为EL0到EL3, 其中数字越大代表特权(privilege)越大。类似地,可以将EL0归属于non-privilege level,EL1/2/3属于privilege level。如下图所示。EL0: 无特权模式(unprivileged) EL1: 操作系統核心模式(OS kern...
实际上,即便是由于SOC支持TrustZone而导致cpu core上电后进入EL3,这时候,接管cpu控制的一定不是linux kernel(至少目前来看linux kernel不会做Secure monitor),而是Secure Platform Firmware(也就是传说中的secure monitor),它会进行硬件平台的初始化,loading trusted OS等等,等到完成了secure world的构建之后,把控制权...
fucntion el3 exit msr spsr_el3 x0 msr elr_el3 x1 isb eret (2) 软件产生的异常 ARMv8提供了3中软件产生的异常,发生此异常的原因是软件企图进入更高的异常等级。 SVC 允许用户模式下的程序请求os服务 HVC 允许客户机(Linux os)请求主机服务 SMC 允许普通世界的程序请求安全服务 ...
BL1位于ROM中,在EL3下从reset vector处开始运行。 BL1做的工作主要有: 决定启动路径:冷启动还是热启动。 架构初始化:异常向量、CPU复位处理函数配置、控制寄存器设置(SCRLR_EL3/SCR_EL3/CPTR_EL3/DAIF) 平台初始化:使能Trusted Watchdog、初始化控制台、配置硬件一致性互联、配置MMU、初始化相关存储设备。
CPTR_EL2, Architectural Feature Trap Register, EL2 CPTR_EL3, Architectural Feature Trap Register, EL3 CPUACTLR_EL1, CPU Auxiliary Control Register, EL1 CPUACTLR2_EL1, CPU Auxiliary Control Register 2, EL1 CPUACTLR3_EL1, CPU Auxiliary Control Register 3, EL1 CPUACTLR5...
CPTR_EL3: Architectural Feature Trap Register (EL3) CSSELR_EL1: Cache Size Selection Register CTR_EL0: Cache Type Register CurrentEL: Current Exception Level DACR32_EL2: Domain Access Control Register DAIF: Interrupt Mask Bits DBGAUTHSTATUS_EL1: Debug Authentication Status register DBGBCR<n>_...
最好的入门就是从工程出发,之前关于V8构架下关于指令的执行中TRAP捕获指令的行为只算是做了些简单的切入,而就这次就收集到TRAP捕获的主要关于EL3的寄存器实现,内容还是被当作草稿,就是简单地做个速写描摹个基本的模样先: #define CPTR_EL3 Capture register el3 ...