Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 18 Jul 2001 12:28:00 -0500 (CDT)
From:      Jonathan Lemon <jlemon@flugsvamp.com>
To:        yokota@zodiac.mech.utsunomiya-u.ac.jp, current@freebsd.org
Subject:   Re: vm86 problem in -CURRENT
Message-ID:  <200107181728.f6IHS0K63136@prism.flugsvamp.com>
In-Reply-To: <local.mail.freebsd-current/200107180958.SAA13935@zodiac.mech.utsunomiya-u.ac.jp>

next in thread | previous in thread | raw e-mail | index | archive | help
In article <local.mail.freebsd-current/200107180958.SAA13935@zodiac.mech.utsunomiya-u.ac.jp> you write:
>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.
-- 
Jonathan

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200107181728.f6IHS0K63136>