Archived from groups: alt.games.microprose.transport-tyc (
More info?)
On Mon, 30 May 2005 16:20:23 +0200, Marcin Grzegorczyk wrote:
> Josef Drexler wrote:
>> [...]
>> Ah, that's actually a crash in TTD. Somehow XP64 doesn't seem to allow
>> setting the FS segment register, or it fails in other ways.
>
> As you may know, under Win32 the FS register points to a special segment
> which contains a structure called Thread Information Block. This is
> used, among others, for structured exception handling.
>
> AFAIK when a 64-bit processor is running in the IA-32e compatibility
> mode, the FS and GS registers are treated somewhat different to the
> other segment registers. Might have something to do with the crash.
> (Perhaps XP64 somehow protects the FS register to ensure that IA-32
> programs don't mess it up.)
It's either that, or it doesn't restore it properly after a mode switch
from 64 bit mode. Perhaps it always restores it to the TIB instead of the
value it had before.
Either way, just removing all FS prefix instructions fixed the problem, so
I've integrated that into alpha 51 (as part of the win2k switch).
--
Josef Drexler | http://jdrexler.com/home/
---------------------------------+---------------------------------------
Please help Conserve Gravity | Email address is *valid*.
Give up downhill skiing. | Don't remove the "nospam" part.