Am Sonntag, 20. April 2008 schrieb Axel Dörfler: > Ingo Weinhold <ingo_weinhold@xxxxxx> wrote: > > I would simply reserve a small piece of the required address space > > and do the > > vm86 stuff fully in the kernel (i.e. available to userland via an > > ioctl() > > only). When the driver needs to execute vm86 code, an area with the > > code to > > execute and the stack are mapped into the reserved region (cloned or > > copied > > -- whatever makes sense), the code is executed, and when done the > > area is > > unmapped again. That's not high-performance, but for stuff like > > resolution > > changes, it should be totally sufficient. > > That sounds indeed like the best solution. It probably wouldn't even > hurt to keep the area around - we might want to have a similar solution > for APM; at least it seems to help some buggy implementations to make > that address range available. Ok, I'm about to revise my patch to provide a vm86() kernel function. I have an idea on how to implement it but it will take some time... To make area/mapping stuff more clear let me summarize the requirements: * A private area on 0x000--0x502 with the real values copied from the physical RAM * Most propably another private area in the 640kb range for some enry/exit code and stack * A identity mapping of the 0xA0000--0xFFFFF range /Jan