|
From: | Gwenole Beauchesne |
Subject: | Re: [Qemu-devel] Re: strange crash on FreeBSD-current/amd64 (pointer truncation?) |
Date: | Sat, 3 Feb 2007 19:12:25 +0100 |
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
[Prev in Thread] | Current Thread | [Next in Thread] |