[haiku-development] Re: Virtual 8086 mode support

  • From: Ingo Weinhold <ingo_weinhold@xxxxxx>
  • To: haiku-development@xxxxxxxxxxxxx
  • Date: Sat, 26 Apr 2008 21:50:46 +0200

On 2008-04-26 at 21:23:24 [+0200], Jan Klötzke <jan.kloetzke@xxxxxxxxxx> 
wrote:
> Am Samstag, 26. April 2008 schrieb Ingo Weinhold:
> > > The problem is that vm_page_fault() will just send a SIGSEGV but the 
> > > vm86
> > > mode
> > > is not interrupted due to signals. In this case we end up in a deadlock
> > > because making vm86 (BIOS) calls interruptable doesn't seem to be a good
> > > option eighther.
> > >
> > > Anyway, using vm_soft_fault() specifically for the vm86 case looks like 
> > > a
> > > viable option. I haven't tried it yet because it's declared "static" in
> > > vm.cpp.
> >
> > Mmh, why not just use a fault handler?
> 
> Vm86 mode is counted as "user mode"...

Ah, OK. I suppose we could use it nevertheless. Maybe not as interrupt return 
address as in the other cases, but as a call back function:

typedef status_t (*page_fault_callback)(addr_t address,
        addr_t faultAddress, bool isWrite);

In the userland case, vm_page_fault() would invoke it, if specified, and do 
the signal sending depending on its return value.

CU, Ingo

Other related posts: