Hi,
Hmm. All I can say is the upper half of rbx (which holds T0) gets spilled on FreeBSD-current/amd64 hosts unless saving and restoring the full 64 bit of it...
That's also what I got with VirtualBox on x86_64. Here is an update to the patch I posted yesterday and that applies to current QEMU CVS instead.
Please note this one applies unconditionnally of the host and target combinations. Besides, I only tested the following combinations: x86_64/x86_64-softmmu, x86_64/i386-softmmu, i586/x86_64-softmmu, i586/i386-softmmu. And I verified that the generated code for cpu_exec() with both gcc 3.4 and gcc 4.1 actually does the host registers save/restore correctly.
BTW, for e.g. SPARC hosts with %l<R> registers, we could define something like DONT_PRESERVE_AREG<AR> since those would lay in a new register window and thus don't require an explicit save/restore.
Regards, Gwenole Beauchesne<http://svn.mandriva.com/cgi-bin/viewvc.cgi/packages/cooker/qemu/ current/SOURCES/qemu-0.8.3-preserve-host-registers.patch>
qemu-0.8.3-preserve-host-registers.patch
Description: Binary data
_______________________________________________ Qemu-devel mailing list Qemu-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/qemu-devel