On Sat, Jun 27, 1998 at 09:44:52AM -0600, Kevin Van Maren wrote:
> "The 32-bit PCI BIOS functions must be accessed using CALL FAR. The
> CS and DS register descriptors must be setup to encompass the physical
> addresses specified by the Base and Length parameters returned by the
> BIOS32 Service Directory. The CS and DS descriptors must have the same
> base. The calling environment must allow access to IO space and provide
> at least 1K of stack space."
The biggest problem with this is exactly as Jeremy said. There is not a
convinent way to open 'all of IO space' and I'm not sure you would even
want to do this. I think the best solution here would be a signal handler
which would allow the program to handle unallowed accesses to IO or MEMORY
space. This would not only allow this to work (i.e. the signal handler
would open up the IO register when the BIOS32 code tried to access it, and
then it would let it continue to run) but this would also allow in program
page fault handlers and such later.
OS/2 actually uses in program page fault handlers to handle all your
memory fault needs. They use an in program fault handler to handle growing
the stack. They used a system called 'guard pages' where you would setup a
guard page, and if someone hit a guard page, then your handler was called.
-- David Jeske (N9LCA) + http://www.chat.net/~jeske/ + jeske_at_chat.netReceived on Sat Jun 27 06:20:17 1998
This archive was generated by hypermail 2.1.8 : Thu Sep 22 2005 - 15:12:43 PDT