Design of memory setup
Posted: Sat Feb 28, 2004 4:13 pm
I am going to support VM86, so I need to keep the 1MB of address space free for it. I also would eventually want to support ISA cards, DMA for floppy, so I need to keep from 2MB - 16MB free for that. Given that in mind, I would like to load the kernel from 16MB - 1GB and place the user on top of that from 1GB and on.
Now in order to run VM86, I need a way to access user mode ring 3.
Where do I run my vm86 code from? I suppose its in the kernel space, but if this is so; will I be able to access the vm86 code from the memory space outside of the kernel?
Second point: Can I have a kernel space from 1MB - 1GB and have the Vm86, ISA/DMA code inside of it?
Third point: If the vm86 code is in the kernel, is there a way to prevent the code from enterfering with other drivers and stuff found in the kernel?
Now in order to run VM86, I need a way to access user mode ring 3.
So this solves my problem. Theres only one catch.Suffice to say that if you've chosen to put your kernel in the bottom half and your applications in the top half, you're stuck (unless you re-map the first megabyte so that it's accessible to ring 3 and make sure there's nothing important there
Where do I run my vm86 code from? I suppose its in the kernel space, but if this is so; will I be able to access the vm86 code from the memory space outside of the kernel?
Second point: Can I have a kernel space from 1MB - 1GB and have the Vm86, ISA/DMA code inside of it?
Third point: If the vm86 code is in the kernel, is there a way to prevent the code from enterfering with other drivers and stuff found in the kernel?