[v6 PATCH 00/21] x86: Enable User-Mode Instruction Prevention

Stas Sergeev stsp at list.ru
Mon Mar 13 16:25:38 CDT 2017


11.03.2017 02:59, Ricardo Neri пишет:
> On Fri, 2017-03-10 at 14:33 +0300, Stas Sergeev wrote:
>
>> Why would you need one?
>> Or do you really want to allow these instructions
>> in v86 by the means of emulation? If so - this wasn't
>> clearly stated in the patch description, neither it was
>> properly discussed, it seems.
> It str and sldt can be emulated in vm86 but as Andy mention, the
> behavior sould be the same with and without emulation.
Why would you do that?
I looked up the dosemu2 CPU simulator code that
is used under x86-64. It says this:
---
                                     CODE_FLUSH();
                                     if (REALMODE()) goto illegal_op;
                                     PC += ModRMSim(PC+1, mode) + 1;
                                     error("SLDT not implemented\n");
                                     break;
                                 case 1: /* STR */
                                     /* Store Task Register */
                                     CODE_FLUSH();
                                     if (REALMODE()) goto illegal_op;
                                     PC += ModRMSim(PC+1, mode) + 1;
                                     error("STR not implemented\n");
                                     break;
...
                                 case 0: /* SGDT */
                                     /* Store Global Descriptor Table 
Register */
                                     PC++; PC += ModRM(opc, PC, 
mode|DATA16|MSTORE);
                                     error("SGDT not implemented\n");
                                     break;
                                 case 1: /* SIDT */
                                     /* Store Interrupt Descriptor Table 
Register */
                                     PC++; PC += ModRM(opc, PC, 
mode|DATA16|MSTORE);
                                     error("SIDT not implemented\n");
                                     break;
---

It only implements smsw.
So maybe you can make your code much
simpler and remove the unneeded emulation?
Same is for prot mode. You know the wine's
requirements now - they are very small. And
dosemu doesn't need anything at all but smsw.
And even smsw is very rare.



More information about the wine-devel mailing list