V86 Mode
Posted: Sun Sep 02, 2007 2:07 pm
Hello,
i've a big problem to make a V86 task ... i need V86 mode to switch to another VBE mode ...
in my OS i can schedule ring0 and ring3 tasks ...
is it true that i only set the V86 bit in the EFLAGS to choos the V86 mode ?
Here is an example how i set the V86-Task-Stack up:
I don't that the error is in this part.
Bochs show me these errors:
and many errors like:
I don't know if the task is running in V86 mode ... I hope somebody have made experiance with the virtual 86 mode and can help me ...
Thanks,
stafe
i've a big problem to make a V86 task ... i need V86 mode to switch to another VBE mode ...
in my OS i can schedule ring0 and ring3 tasks ...
is it true that i only set the V86 bit in the EFLAGS to choos the V86 mode ?
Here is an example how i set the V86-Task-Stack up:
Code: Select all
stackptr=kernstack;
*--stackptr=0x20|3;
*--stackptr=0x20|3;
*--stackptr=0x20|3;
*--stackptr=0x20|3;
*--stackptr=0x20|3;
*--stackptr=(unsigned long)userstack;
*--stackptr=0x20002L;
*--stackptr=0x18|3;
*--stackptr=(unsigned long)startpunkt;
*--stackptr=0x0; //EAX
*--stackptr=0x0; //ECX
*--stackptr=0x0; //EDX
*--stackptr=0x0; //EBX
*--stackptr=0x0; //-->ESP kann Null sein
*--stackptr=0x0; //EBP
*--stackptr=0x0; //ESI
*--stackptr=0x0; //EDI
*--stackptr=0x10; //ds
*--stackptr=0x10; //es
*--stackptr=0x10; //fs
*--stackptr=0x10; //gs
Bochs show me these errors:
Code: Select all
00084951475-i-@00102142-[CPU ] IRET to V86-mode: ignoring upper 16-bits
00084951478-i-@00000003-[CPU ] LOCK prefix unallowed (op1=0x53, attr=0x0, mod=0x0, nnn=0)
Code: Select all
00084951522-e-@00101852-[CPU ] seg = DS
00084951522-e-@00101852-[CPU ] seg->selector.value = 0000
Thanks,
stafe