diff options
author | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2011-04-16 20:10:34 +0200 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2011-04-16 20:10:34 +0200 |
commit | 7a62421e8e162e3f9f660ea08cc19284fb64cd20 (patch) | |
tree | 61c1f888d67f3c8a092d8bb59b02c7796e701ea0 /lib | |
parent | 065927be43c1aef5771c0b18b28b8ef9ccdc6eae (diff) | |
download | gnutls-7a62421e8e162e3f9f660ea08cc19284fb64cd20.tar.gz |
Try to detect AES-NI on Intel and AMD machines only.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/accelerated/intel/aes-x86.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/lib/accelerated/intel/aes-x86.c b/lib/accelerated/intel/aes-x86.c index f1a24aa1b6..101569554b 100644 --- a/lib/accelerated/intel/aes-x86.c +++ b/lib/accelerated/intel/aes-x86.c @@ -155,10 +155,33 @@ check_optimized_aes (void) return (c & 0x2000000); } +static unsigned +check_intel_or_amd (void) +{ + unsigned int a, b, c, d; + cpuid (0, a, b, c, d); + + if ((memcmp(&b, "Genu", 4) == 0 && + memcmp(&d, "ineI", 4) == 0 && + memcmp(&c, "ntel", 4) == 0) || + (memcmp(&b, "Auth", 4) == 0 && + memcmp(&d, "enti", 4) == 0 && + memcmp(&c, "cAMD", 4) == 0)) + { + return 1; + } + + return 0; +} + void register_x86_crypto (void) { int ret; + + if (check_intel_or_amd() == 0) + return; + if (check_optimized_aes ()) { fprintf (stderr, "Intel AES accelerator was detected\n"); |