⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 95.html

📁 linux 0.11中文版 有注释
💻 HTML
字号:
<html>
<head>
<title>mm/page.s</title>
<meta name='robots' content='noindex,nofollow'>
<meta name='generator' content='GLOBAL-5.4.1'>
</head>
<body text='#191970' bgcolor='#f5f5dc' vlink='gray'>
<a name='TOP'><h2><a href='../mains.html'>root</a>/<a href='../files/109.html'>mm</a>/page.s</h2>
<i><font color='green'>/* [&lt;][&gt;][^][v][top]<a href='#BOTTOM'>[bottom]</a><a href='../mains.html'>[index]</a><a href='../help.html'>[help]</a> */</font></i>
<hr>
<pre>
<a name='L1'><i><font color='green'>/*</font></i>
<a name='L2'><i><font color='green'>* linux/mm/page.s</font></i>
<a name='L3'><i><font color='green'>*</font></i>
<a name='L4'><i><font color='green'>* (C) 1991 Linus Torvalds</font></i>
<a name='L5'><i><font color='green'>*/</font></i>
<a name='L6'>
<a name='L7'><i><font color='green'>/*</font></i>
<a name='L8'><i><font color='green'>* page.s contains the low-level page-exception code.</font></i>
<a name='L9'><i><font color='green'>* the real work is done in mm.c</font></i>
<a name='L10'><i><font color='green'>*/</font></i>
<a name='L11'><i><font color='green'>/*</font></i>
<a name='L12'><i><font color='green'>* page.s 程序包含底层页异常处理代码。实际的工作在memory.c 中完成。</font></i>
<a name='L13'><i><font color='green'>*/</font></i>
<a name='L14'>
<a name='L15'>.globl _page_fault
<a name='L16'>
<a name='L17'>_page_fault:
<a name='L18'>xchgl %eax,(%esp) # 取出错码到eax。
<a name='L19'>pushl %ecx
<a name='L20'>pushl %edx
<a name='L21'>push %ds
<a name='L22'>push %es
<a name='L23'>push %fs
<a name='L24'>movl $0x10,%edx # 置内核数据段选择符。
<a name='L25'>mov %dx,%ds
<a name='L26'>mov %dx,%es
<a name='L27'>mov %dx,%fs
<a name='L28'>movl %cr2,%edx # 取引起页面异常的线性地址
<a name='L29'>pushl %edx # 将该线性地址和出错码压入堆栈,作为调用函数的参数。
<a name='L30'>pushl %eax
<a name='L31'>testl $1,%eax # 测试标志P,如果不是缺页引起的异常则跳转。
<a name='L32'>10.5 page.s 程序
<a name='L33'>jne 1f
<a name='L34'>call _do_no_page # 调用缺页处理函数(mm/memory.c,365 行)。
<a name='L35'>jmp 2f
<a name='L36'>1: call _do_wp_page # 调用写保护处理函数(mm/memory.c,247 行)。
<a name='L37'>2: addl $8,%esp # 丢弃压入栈的两个参数。
<a name='L38'>pop %fs
<a name='L39'>pop %es
<a name='L40'>pop %ds
<a name='L41'>popl %edx
<a name='L42'>popl %ecx
<a name='L43'>popl %eax
<a name='L44'>iret
</pre>
<hr>
<a name='BOTTOM'>
<i><font color='green'>/* [&lt;][&gt;][^][v]<a href='#TOP'>[top]</a>[bottom]<a href='../mains.html'>[index]</a><a href='../help.html'>[help]</a> */</font></i>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -