ntdll/tests: Do not write to fs, gs when testing cleared segment regs on x64.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51152 Signed-off-by: Paul Gofman <pgofman@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
7722915395
commit
4e4847dd71
|
@ -2906,13 +2906,30 @@ static const struct exception
|
|||
0x31, 0xc0, /* xor %eax,%eax */
|
||||
0x8e, 0xc0, /* mov %eax,%es */
|
||||
0x8e, 0xd8, /* mov %eax,%ds */
|
||||
#if 0
|
||||
/* It is observed that fs/gs base is reset
|
||||
on some CPUs when setting the segment value
|
||||
even to 0 (regardless of CPU spec
|
||||
saying otherwise) and it is not currently
|
||||
handled in Wine.
|
||||
Disable this part to avoid crashing the test. */
|
||||
0x8e, 0xe0, /* mov %eax,%fs */
|
||||
0x8e, 0xe8, /* mov %eax,%gs */
|
||||
#else
|
||||
0x90, 0x90, /* nop */
|
||||
0x90, 0x90, /* nop */
|
||||
#endif
|
||||
0xfa, /* cli */
|
||||
0x58, /* pop %rax */
|
||||
#if 0
|
||||
0x8e, 0xe8, /* mov %eax,%gs */
|
||||
0x58, /* pop %rax */
|
||||
0x8e, 0xe0, /* mov %eax,%fs */
|
||||
#else
|
||||
0x58, /* pop %rax */
|
||||
0x90, 0x90, /* nop */
|
||||
0x90, 0x90, /* nop */
|
||||
#endif
|
||||
0x58, /* pop %rax */
|
||||
0x8e, 0xd8, /* mov %eax,%ds */
|
||||
0x58, /* pop %rax */
|
||||
|
|
Loading…
Reference in New Issue