\()" 符号连接 和引用宏参数


 

 汇编宏kernel_ventry

该汇编宏主要是用于异常响应向量表中,每个向量的宽度为0x80字节,即0x20条指令(每条指令4字节);而且每个向量入口点地址必须按照0x80对齐,即地址低7位为零。由于0x20条指令不可能完成异常处理过程,因此在这0x20条指令之内一定要跳转到到其他函数执行。

一般情况下,kernel_ventry的实现如下:

.macro kernel_ventry, el, label, regsize = 64
.align = 7   // 地址对齐要求
sub sp, sp, #S_FRAME_SIZE //堆栈指针处理
b el\()\el\()_\label        //跳转
.endm

 

系统调用是从“kernel_ventry 0, sync”进入,即el=0,label=sync。因此最终跳转进入el0_sync汇编

其中" \()"是汇编符号连接,\el和\label是汇编宏的参数引用。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM