\()" 符號連接 和引用宏參數


 

 匯編宏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