1 中斷處理程序的基本要求
????????當前運行的loop是一條執(zhí)行流,中斷程序運行開啟了另外一條執(zhí)行流,從上一節(jié)得知這是三種跳轉的第三類,這個是一個大跳轉。對中斷程序的基本要求就是中斷執(zhí)行完畢后要恢復到原來執(zhí)行的程序,除了時間流逝外,原來運行的程序應該毫無感知。
????????
具體到Armv8架構,中斷上下文要保存就是X0-X30。X30是LR寄存器。
2 Armv8 異常處理前半段
Armv8在exception發(fā)起后,PE做了一些前提工作:
? ? ? ? (1) CPU core感知到異常發(fā)生,生成一個目標異常等級
????????(2) 把PSTATE寄存器里的值保存到對應目標異常等級的SPSR_ELx寄存器便于恢復時使用
????????(3) 把返回地址保存在對應目標異常等級的ELR_ELx中。
????????????????若是同步異常,則ELR寄存器存的是aborted PC,把異常的原因寫入到ESR_ELx寄存器
? ? ? (4) 把PSTATE寄存器里的DAIF字段都mark掉
? ? ? (5)設置SP,指向目標異常等級里的棧,自動切換SP到SP_ELx寄存器中
? ? ? ? ??將異常級別從EL0提升到EL1,使用的棧指針寄存器由SP_EL0變?yōu)榱薙P_EL1文章來源:http://www.zghlxwxcb.cn/news/detail-500540.html
? ? ? ? ? 表基址寄存器由T文章來源地址http://www.zghlxwxcb.cn/news/detail-500540.html
到了這里,關于從零開始理解Linux中斷架構(7)--- Linux執(zhí)行上下文之中斷上下文的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!