SCR_EL3 HCR_EL2 栈的选择 我们可以通过SPSel寄存器来配置SP。SPSel寄存器中的SP字段设置为0表示所有的EL中使用SP_EL0作为栈指针寄存器,设置为1表示使用SP_ELx作为栈指针寄存器 ARMV8异常向量表 ARMV8向量表有如下特点 除EL0之后,每个EL都有自己的异常向量表 异常向量表的基地址需要设置到VBAR_ELx中 异常向...
这利用了EL2上的HCR_EL2(Hypervisor Configuration Register)和EL3上的SCR_EL3(Secure Configuration Register)。复位时,如果可切换,通过外部PIN设置EL3执行状态。 3.3 安全状态 AArch64允许实现多种安全状态。进一步区分软件,隔离和划分受信任的软件。大多数Cortex-A处理器支持两种安全状态: Secure state:在这个状态下,...
(2)同步异常是可以在当前EL处理的,比如在EL1里发生的同步异常; (3)对于异步异常,可以路由到EL1/EL2/EL3处理,需要配置HCR以及SCR相关寄存器; 路由方法: 1.选择异常级别: 当异常发生时,PC可以有三个基地址VBAR_EL1、VBAR_EL3、VBAR_EL1(secure)供选择;路由规则如下: 举两例来说明下: 第一个红色框的内容表...
如果要路由到EL3,需要设置SCR_EL3.{EA,IRQ,FIQ}。 示例3:展示了如何将SError、IRQ和FIQ路由到EL3异常级别的设置 代码语言:javascript 代码运行次数:0 运行 AI代码解释 MRSX0,SCR_EL3ORRX0,X0,#(1<<3)// 设置EA位ORRX0,X0,#(1<<1)// 设置IRQ位ORRX0,X0,#(1<<2)// 设置FIQ位MSRSCR_EL3,...
fastmodel最开始执行程序,是在EL3,在EL3,设置scr_el3寄存器,设置EL2运行模式是non-secure,aarch32...
通常在 EL0 级别调用 svc 指令,触发一个同步异常,CPU 则会切换到 EL1 级别;如果在 EL0 级别来了一个 IRQ 或 FIQ,就会触发一个异步中断,CPU 会根据 SCR 寄存器中的中断配置来决定切换 EL1 或 EL2 或 EL3 级别,同时也会区分 EL 级别使用的是 AArch64,还是 AArch32 的指令集。
_exception_vectors=runtime_exceptions//设置el3的异常向量表->bl bl31_early_platform_setup//跳转到平台早期设置->bl bl31_plat_arch_setup//跳转到平台架构设置->bl bl31_main//跳转到bl31_main atf/bl31/aarch64/bl31_main.c:->NOTICE("BL31: %s\n", version_string);//打印版本信息->NOTICE("...
smc指令触发进入el3异常向量表: 代码语言:javascript 代码运行次数:0 运行 AI代码解释 runtime_exceptions//el3的异常向量表->sync_exception_aarch64->handle_sync_exception->smc_handler64->¦*Populate the parametersfortheSMChandler.¦*We already have x0-x4inplace.x5 will point to acookie(not used...
// 禁止L1-CacheMRS X0, SCTLR_EL3 // 读取SCTLR_EL3BIC X0, X0, #(0x1 << 2) // 禁止D-CacheMSR SCTLR_EL3, X0 // 写SCTLR_EL3// 使D-Cache无效,以使代码通用// 首先,计算Cache大小,然后循环遍历每个set + wayMOV X0, #0x0 // X0 = Cache levelMSR CSSELR_EL1, X0 // 0x0是L1...