1: armv8_switch_to_el2_m x4, x5, x6 ENDPROC(armv8_switch_to_el2) ENTRY(armv8_switch_to_el1) switch_el x6, 0f, 1f, 0f 0: /* x4 is kernel entry point. When running in EL1 * now, jump to the address saved in x4. */ br x4 1: armv8_switch_to_el1_m x4, x5, x6...
Status-R eretswitch_to_el1_from_el2:/* 使能el1与el0对el物理计数器reg,定时器reg的访问 */mrsx0, cnthctl_el2orrx0, x0,#3msrcnthctl_el2, x0msrcntvoff_el2, xzr/* Enable AArch64 in EL1. */// hcr_el2.rw = 1 设置在el1时使用aarch64 (否则为aarch32)movx1, #(1<<31)/...
ARM DDI 0487中D19.2以H开头的系列寄存器可以控制在guest读写执行某些敏感指令的行为。 enable HCR_EL2.IMO中断会route到EL2。还由FMO,AMObit也有同样的作用。 HCR_EL2的E2H控制vhe的行为,如果打开则由TGE决定当前是VM还是host,1是host,表面host kernel在EL2,也就不需要virtual interrupt了。所以在VM中E2H=1,...
bl armv8_switch_to_el2因为u-boot处于el3级别时,当启动linux时会将异常级别降低到el2或者el1来启动linux,根据具体设置来切换,而处于el3时则会将异常级别切换到el2,所以这里的操作是与主核一致,从核要进入linux,首先就是要将自己的异常级别从el3切换到el2。是否真实的能切到el2还要根据自己当前的级别,如果已经...
switch_to_el2_from_el3: // 向scr_el3写入0101_1011_0001 // [0]:1 NS none secure EL0与EL1处于Non-secure状态 // [1]:0 IRQ 路由 当设为0时:(在EL3级别以下产生IRQ时,不会带入EL3;当在EL3时,不会产生IRQ) 当设为1时:无论哪一EL,产生IQR时都会带入到EL3 ...
switch (exception_index) { case ARM_EXCEPTION_IRQ: return 1; case ARM_EXCEPTION_EL1_SERROR: return 1; case ARM_EXCEPTION_TRAP: return handle_trap_exceptions(vcpu); … return 0; } } 我们看到该函数对中断退出情形未做任何处理而直接返回了,那么虚拟中断是在哪里被注入的呢?
登录后复制switch(irqnr) { 登录后复制casePENDING_G1S_INTID: 登录后复制returnINTR_TYPE_S_EL1; 登录后复制casePENDING_G1NS_INTID: 登录后复制returnINTR_TYPE_NS; 登录后复制caseGIC_SPURIOUS_INTERRUPT: 登录后复制returnINTR_TYPE_INVAL; 登录后复制default: ...
Linux内核中,异常处理主要由两个文件完毕,entry.S和traps.c。当然另一些其他异常处理函数分布于fault.c, memory.c等等。entry.S包括异常的入口、进入异常处理C函数前的压栈、退出C函数前的出栈、一些fork函数相关的处理代码(暂不分析)、任务切换汇编处理过程(cpu_switch_to函数,暂不分析)。
.align7,INV_INSN el0_sync_a64:restore_mapping mrs x2,esr_el1 mrs x3,sp_el0 lsr x2,x2,#ESR_EC_SHIFT cmp x2,#ESR_EC_AARCH64_SVC b.eq el0_svc//---b.cond的应用 b el0_sync_abort check_vector_size el0_sync_a64 (cbz、cbnz的...
#if defined(CONFIG_ARMV8__SPL_EXCEPTION_VECTORS) || !defined(CONFIG_SPL_BUILD) #if defined(CONFIG_ARMV8_SPL_EXCEPTION_VECTORS) || !defined(CONFIG_SPL_BUILD) /* Relocate vBAR */ adr x0, vectors switch_el x1, 3f, 2f, 1f 0 comments on commit ef331e3 Please sign in to comment. Fo...