x86emul/test: keep compiler from using {x,y,z}mm registers itself

Since the emulator acts on the live hardware registers, we need to
prevent the compiler from using them e.g. for inlined memcpy() /
memset() (as gcc7 does). We can't, however, set this from the command
line, as otherwise the 64-bit build would face issues with functions
returning floating point values and being declared in standard headers.

As the pragma isn't available prior to gcc6, we need to invoke it
conditionally. Luckily up to gcc6 we haven't seen generated code access
SIMD registers beyond what our asm()s do.

Reported-by: George Dunlap <george.dunlap@citrix.com>
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
Release-acked-by: Julien Grall <julien.grall@linaro.org>
This commit is contained in:
Jan Beulich committed 2017-11-23 11:40:31 +01:00
1 parent 24246e1fb7
commit 79136f2673
1 file changed
+5
+5
View File
@@ -4,6 +4,11 @@
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#if __GNUC__ >= 6
#pragma GCC target("no-sse")
#endif
#include <xen/xen.h>
#include <asm/msr-index.h>
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.