?? page.s
字號:
/** linux/mm/page.s** (C) 1991 Linus Torvalds*//** page.s contains the low-level page-exception code.* the real work is done in mm.c*//** page.s 程序包含底層頁異常處理代碼。實際的工作在memory.c 中完成。*/.globl _page_fault_page_fault:xchgl %eax,(%esp) # 取出錯碼到eax。pushl %ecxpushl %edxpush %dspush %espush %fsmovl $0x10,%edx # 置內核數據段選擇符。mov %dx,%dsmov %dx,%esmov %dx,%fsmovl %cr2,%edx # 取引起頁面異常的線性地址pushl %edx # 將該線性地址和出錯碼壓入堆棧,作為調用函數的參數。pushl %eaxtestl $1,%eax # 測試標志P,如果不是缺頁引起的異常則跳轉。10.5 page.s 程序jne 1fcall _do_no_page # 調用缺頁處理函數(mm/memory.c,365 行)。jmp 2f1: call _do_wp_page # 調用寫保護處理函數(mm/memory.c,247 行)。2: addl $8,%esp # 丟棄壓入棧的兩個參數。pop %fspop %espop %dspopl %edxpopl %ecxpopl %eaxiret
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -