我想在虛擬機中生成一箇中斷,並且寫了一個簡單的中斷處理程序,但是當我嘗試測試這個中斷生成和處理時,內核因爲頁面錯誤而崩潰。現在我調試的問題,並發現,在「entry_64.S」文件,其中「error_entry」被稱爲推寄存器堆棧上,並檢查是否有GS有下面的代碼:爲什麼中斷處理程序入口代碼檢查進位標誌?
xorl %ebx,%ebx
testl $3,CS+8(%rsp)
je error_kernelspace
error_swapgs:
SWAPGS
當中斷的處理,CPU將推動EFLAGS到(rsp)+ CS + 8位置。因此,在上面的代碼'testl'指令中,檢查中斷時是否設置了標誌進位標誌,以檢測中斷是處於內核模式還是用戶模式。
可以請某人解釋爲什麼在這裏檢查進位標誌?
您可能在Linux內核郵件列表上獲得更好的答案。 – Keith 2011-06-16 19:03:21
作爲一個編程問題,這應該是[SO]。 – bwDraco 2011-06-16 19:03:40