diff options
Diffstat (limited to 'linux/mm/page.s')
| -rw-r--r-- | linux/mm/page.s | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/linux/mm/page.s b/linux/mm/page.s new file mode 100644 index 0000000..27488c2 --- /dev/null +++ b/linux/mm/page.s @@ -0,0 +1,34 @@ +/* + * page.s contains the low-level page-exception code. + * the real work is done in mm.c + */ + +.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 + 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 |
