linux0.11内存管理之page.s文件

!page.s包括页异常处理程序,(中断14),主要分两种情况处理.一是由于缺页引起的
!页异常中断,通过调用do_no_page(err_code,address)来处理,二是由页写保护引起
!的页异常,此时通过调用页写保护处理函数do_wp_page(err_code,address)处理哦
!其中出错码(err_code)由CPU自动产生并压入堆栈,出现异常时访问的线性地址是从控制
!寄存器CR2获得的
!

.globl _page_fault
_page_fault:
					xchgl %eax,(%esp)  !取出错码
					pushl %ecx         !
					pushl %edx         !
					push %ds           !
					push %es           !
					push %fs           !
					movl $0x10,%edx    !置内核数据段选择符
					mov %dx,%ds        !
					mov %dx,%es        !
					mov %dx,%fs        !
					movl %cr2,%edx     !取异常页面异常的线性地址
					pushl %edx         !将该线性地址和出错码压入堆栈,作为调用函数的参数
					pushl %eax         !
					testl $1,%eax      !测试标志P,如果不是缺页引起的异常则跳转
					jne 1f             !
					call _do_no_page   !调用缺页处理函数
					jmp 2f             !
1:				call _do_wp_page   !调用写保护处理函数
2:				addl $8,%esp       !丢弃压入堆栈的两个参数
					pop %fs            !
					pop %es            !
					pop %ds            !
					popl %edx          !
					popl %ecx          !
					popl %eax          !
					iret               !

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值