In article 
<local.mail.freebsd-current/[EMAIL PROTECTED]> you 
>As far as I understand, the entire 1M bytes of lower physical memory
>is supposed to be mapped when vm86_intcall() is run.  Apparently
>0xc0000, where the video BIOS ROM resides, is mapped OK.  But, somehow
>0xa0000, where the video ram is, went missing.  As I wrote before,
>this test program sometimes runs fine, sometimes does not.

When you make a vm86 call from the kernel, it uses a private page
table (located at vm86paddr) in order to map the pages.  The details
of the layout can be found in i386/i386/vm86.c.

This page table is initially populated in locore.s, and contains 
only page 0 + the ISA hole (0xa0000 -> 0x100000).  If getmemsize()
detects that there is a hole between basemem and ISA memory, the pages
in this hole will additionally be mapped into the vm86 space.

If you're getting a page fault while trying to access 0xa0000, then
it would seem that the entries in the vm86 page table are incorrect.
You can check this by examining the page table located at vm86paddr.

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to