[haiku-development] Re: Virtual 8086 mode support

  • From: Jan Klötzke <jan.kloetzke@xxxxxxxxxx>
  • To: haiku-development@xxxxxxxxxxxxx
  • Date: Sat, 26 Apr 2008 21:23:24 +0200

Am Samstag, 26. April 2008 schrieb Ingo Weinhold:
> > Normally working on some locked pages should be sufficient. But the BIOS
> > might
> > go wild ;-) or the caller might forget to initialize a pointer where the
> > BIOS
> > writes back data.
>
> I don't know about BIOSes going wild, but since the caller is the kernel,
> unitialized pointers should never happen.

I know, but according to Murphy's Law... ;-) In the current implementation 
vm86 mode is not left because of a pending signal which would in this case 
lockup the kernel.

> > 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"...

/Jan

Other related posts: