diff options
Diffstat (limited to 'patches/source/glibc/glibc-2.15_avx1.diff')
-rw-r--r-- | patches/source/glibc/glibc-2.15_avx1.diff | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/patches/source/glibc/glibc-2.15_avx1.diff b/patches/source/glibc/glibc-2.15_avx1.diff new file mode 100644 index 000000000..d0616de0e --- /dev/null +++ b/patches/source/glibc/glibc-2.15_avx1.diff @@ -0,0 +1,54 @@ +From: Ulrich Drepper <drepper@gmail.com> +Date: Thu, 26 Jan 2012 12:45:14 +0000 (-0500) +Subject: Reset bit_AVX in __cpu_features is OS support is missing +X-Git-Tag: glibc-2.16-tps~1053 +X-Git-Url: http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff_plain;h=afc5ed09cbce5d6fd48b3a8c5ec427b31f996880 + +Reset bit_AVX in __cpu_features is OS support is missing + +--- sysdeps/x86_64/multiarch/init-arch.c ++++ sysdeps/x86_64/multiarch/init-arch.c +@@ -1,6 +1,6 @@ + /* Initialize CPU feature data. + This file is part of the GNU C Library. +- Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc. ++ Copyright (C) 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. + Contributed by Ulrich Drepper <drepper@redhat.com>. + + The GNU C Library is free software; you can redistribute it and/or +@@ -144,6 +144,18 @@ __init_cpu_features (void) + else + kind = arch_kind_other; + ++ if (__cpu_features.cpuid[COMMON_CPUID_INDEX_1].ecx & bit_AVX) ++ { ++ /* Reset the AVX bit in case OSXSAVE is disabled. */ ++ if ((__cpu_features.cpuid[COMMON_CPUID_INDEX_1].ecx & bit_OSXSAVE) == 0 ++ || ({ unsigned int xcrlow; ++ unsigned int xcrhigh; ++ asm ("xgetbv" ++ : "=a" (xcrlow), "=d" (xcrhigh) : "c" (0)); ++ (xcrlow & 6) != 6; })) ++ __cpu_features.cpuid[COMMON_CPUID_INDEX_1].ecx &= ~bit_AVX; ++ } ++ + __cpu_features.family = family; + __cpu_features.model = model; + atomic_write_barrier (); +--- sysdeps/x86_64/multiarch/init-arch.h ++++ sysdeps/x86_64/multiarch/init-arch.h +@@ -1,5 +1,5 @@ + /* This file is part of the GNU C Library. +- Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc. ++ Copyright (C) 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public +@@ -27,6 +27,7 @@ + #define bit_SSSE3 (1 << 9) + #define bit_SSE4_1 (1 << 19) + #define bit_SSE4_2 (1 << 20) ++#define bit_OSXSAVE (1 << 27) + #define bit_AVX (1 << 28) + #define bit_POPCOUNT (1 << 23) + #define bit_FMA (1 << 12) |