ARM64 用户空间时发生中断el0_irq
来源:互联网 发布:浮云淘宝小号出售平台 编辑:程序博客网 时间:2024/05/16 15:42
.align 6el0_irq: kernel_entry 0el0_irq_naked: enable_dbg#ifdef CONFIG_TRACE_IRQFLAGS bl trace_hardirqs_off#endif
ct_user_exit irq_handler
#ifdef CONFIG_TRACE_IRQFLAGS bl trace_hardirqs_on#endif b ret_to_userENDPROC(el0_irq)
/* * "slow" syscall return path. */ret_to_user: disable_irq // disable interrupts ldr x1, [tsk, #TI_FLAGS] and x2, x1, #_TIF_WORK_MASK cbnz x2, work_pendingfinish_ret_to_user: enable_step_tsk x1, x2 kernel_exit 0ENDPROC(ret_to_user)
.macro enable_step_tsk, flgs, tmp tbz \flgs, #TIF_SINGLESTEP, 9990f disable_dbg mrs \tmp, mdscr_el1 orr \tmp, \tmp, #1 msr mdscr_el1, \tmp9990: .endm
.macro kernel_exit, el .if \el != 0 /* Restore the task's original addr_limit. */ ldr x20, [sp, #S_ORIG_ADDR_LIMIT] str x20, [tsk, #TI_ADDR_LIMIT]
/* No need to restore UAO, it will be restored from SPSR_EL1 */ .endif
ldp x21, x22, [sp, #S_PC] // load ELR, SPSR
.if \el == 0 ct_user_enter ldr x23, [sp, #S_SP] // load return stack pointer msr sp_el0, x23
#ifdef CONFIG_ARM64_ERRATUM_845719alternative_if ARM64_WORKAROUND_845719 tbz x22, #4, 1f#ifdef CONFIG_PID_IN_CONTEXTIDR mrs x29, contextidr_el1 msr contextidr_el1, x29#else msr contextidr_el1, xzr#endif
1:alternative_else_nop_endif#endif .endif
msr elr_el1, x21 // set up the return data msr spsr_el1, x22 ldp x0, x1, [sp, #16 * 0] ldp x2, x3, [sp, #16 * 1] ldp x4, x5, [sp, #16 * 2] ldp x6, x7, [sp, #16 * 3] ldp x8, x9, [sp, #16 * 4] ldp x10, x11, [sp, #16 * 5] ldp x12, x13, [sp, #16 * 6] ldp x14, x15, [sp, #16 * 7] ldp x16, x17, [sp, #16 * 8] ldp x18, x19, [sp, #16 * 9] ldp x20, x21, [sp, #16 * 10] ldp x22, x23, [sp, #16 * 11] ldp x24, x25, [sp, #16 * 12] ldp x26, x27, [sp, #16 * 13] ldp x28, x29, [sp, #16 * 14]
ldr lr, [sp, #S_LR] add sp, sp, #S_FRAME_SIZE // restore sp eret // return to kernel
.endm
- ARM64 用户空间时发生中断el0_irq
- 在用户空间发生中断时,上下文切换的过程
- 在用户空间发生中断时,上下文切换的过程
- 在用户空间发生中断时,上下文切换的过程
- 在用户空间发生中断时,上下文切换的过程
- 在用户空间发生中断时,上下文切换的过程
- 在用户空间发生中断时,上下文切换的过程
- (转)在用户空间发生中断时,上下文切换的过程
- 中断发生时用户堆栈和内核堆栈的切换
- 中断发生时用户堆栈和内核堆栈的切换
- Xenomai用户空间中断示例程序
- 内核空间和用户空间 进程上下文和中断上下文
- 进程上下文 中断上下文 / 用户空间 内核空间
- 用户空间与内核空间,进程上下文与中断上下文
- 用户空间和内核空间、进程上下文与中断上下文
- 用户空间和内核空间、进程上下文和中断上下文
- 用户空间与内核空间,进程上下文与中断上下文
- chrome 调试,当发生异常时中断
- 浅谈https\ssl\数字证书
- Disgruntled Judge UVA
- CoreData的初步理解
- Vue.js的组件(四)父组件与子组件的数据联系 之 双向绑定
- JSP登录页面包括验证码的验证
- ARM64 用户空间时发生中断el0_irq
- JStorm源码分析(二)JStorm中的基本数据结构—— Fields,Values&Tuples(草稿|无图版)
- 小谈移动端加密
- 【4-1】操作文件和目录
- IIC协议
- 用C语言编写程序:求两数的最大公约数。
- 讲解如何进行SNMP MIB的查看
- TextView属性总结,简单的控件也可以很复杂
- django 运行报错view must be a callable or a list/tuple in the case of include()