From 36193952d085c70eee36444a300eb3111ee9e22e Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Mon, 9 Feb 2015 09:53:15 +0000 Subject: [PATCH] Check OSXSAVE flag. --- src/libcryptobox/cryptobox.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/libcryptobox/cryptobox.c b/src/libcryptobox/cryptobox.c index ecc3b5cfc..b99368c5a 100644 --- a/src/libcryptobox/cryptobox.c +++ b/src/libcryptobox/cryptobox.c @@ -90,20 +90,24 @@ rspamd_cryptobox_init (void) rspamd_cryptobox_cpuid (cpu, 1); if (nid > 1) { - if ((cpu[3] & ((gint)1 << 26))) { - cpu_config |= CPUID_SSE2; - } - if ((cpu[2] & ((gint)1 << 28))) { - cpu_config |= CPUID_AVX; - } - } - if (nid > 7) { - rspamd_cryptobox_cpuid (cpu, 7); - if ((cpu[1] & ((gint)1 << 5))) { - cpu_config |= CPUID_AVX2; + /* Check OSXSAVE bit first of all */ + if ((cpu[2] & ((gint)1 << 9))) { + if ((cpu[3] & ((gint)1 << 26))) { + cpu_config |= CPUID_SSE2; + } + if ((cpu[2] & ((gint)1 << 28))) { + cpu_config |= CPUID_AVX; + } + if (nid > 7) { + rspamd_cryptobox_cpuid (cpu, 7); + if ((cpu[1] & ((gint)1 << 5))) { + cpu_config |= CPUID_AVX2; + } + } } } + chacha_load (); poly1305_load (); } -- 2.39.5