X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=arch%2Fx86%2Fmm%2Ffault_64.c;h=dd26e680a43166ca9abe0ced6390989edddf4349;hb=3c1df68b848b39270752ff8d4b956cc4a4dce0f6;hp=9ef0306efe9ef0023383525da351805b8dc575d0;hpb=03252919b79891063cf99145612360efbdf9500b;p=linux-2.6 diff --git a/arch/x86/mm/fault_64.c b/arch/x86/mm/fault_64.c index 9ef0306efe..dd26e680a4 100644 --- a/arch/x86/mm/fault_64.c +++ b/arch/x86/mm/fault_64.c @@ -514,6 +514,17 @@ good_area: tsk->maj_flt++; else tsk->min_flt++; + +#ifdef CONFIG_X86_32 + /* + * Did it hit the DOS screen memory VA from vm86 mode? + */ + if (v8086_mode(regs)) { + unsigned long bit = (address - 0xA0000) >> PAGE_SHIFT; + if (bit < 32) + tsk->thread.screen_bitmap |= 1 << bit; + } +#endif up_read(&mm->mmap_sem); return; @@ -597,7 +608,7 @@ no_context: else printk(KERN_ALERT "Unable to handle kernel paging request"); printk(" at %016lx RIP: \n" KERN_ALERT, address); - printk_address(regs->ip, regs->bp); + printk_address(regs->ip, 1); dump_pagetable(address); tsk->thread.cr2 = address; tsk->thread.trap_no = 14;