@Vincent
thanks for your detailed reply :)

@All

Vinzent Hoefler wrote:
On Wednesday 12 July 2006 11:34, Andreas Berger wrote:

save and restore the floating point unit. I will need to do this for
FPC, so if someone knows how to save and restore the FPU, I would
apreciate the help.

F(X)SAVE/F(X)RSTOR

The X-Versions are more efficient, but only available on newer CPUs.

Now that you mention it, I have used these in the past :). BTW, The X version is available at what CPU's? Would it be acceptable to use this for FPC or should I use the normal FSAVE/FRSTOR functions? Does FPC have a function that tells me what processor I'm running on? In this case I could optimize.
Ideally I could also discover (via an exception
on first FPU usage?) if a thread needs to save/restore the FPU.

Well, I'd say, this is quite hard to do in an efficient way, because you need to detect the usage of MMX instructions, too. As you may recall, Intel decided to implement another brain damaged design and mapped the MMX registers onto the FPU registers.

I have to dig deep in my memory now, so take the following paragraphs with caution, I may be wrong (it's just too long ago):

In theory it is possible to do, but only if you have write access to the EFLAGS register (where you could temporarily set a flag to raise an exception on MMX usage). But the usual DOS-target means DPMI, which means privilege level 3 which means: You're just not allowed to fiddle around with those. IIRC, there's a ring0-mode DPMI-Host available (should be CWSDPR0.EXE), but this only works in real plain DOS, so the option to run the program inside a Windows-DOS-Box would be out completely, I guess.

Depending on your needs this might be ok, but as a general solution for FPC/GO32V2 this wouldn't be acceptable, I think.
You're right, better not to do this for a general library.

Ok, will be start to write the threads.

Andreas

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to