summaryrefslogtreecommitdiff
path: root/src/hwfeatures.c
diff options
context:
space:
mode:
authorJussi Kivilinna <jussi.kivilinna@mbnet.fi>2012-11-16 10:44:54 +0200
committerWerner Koch <wk@gnupg.org>2012-11-21 11:52:04 +0100
commitd8bdfa42ed582655c180e7db9b16d4e756a12a6e (patch)
tree426d21eb013a1cd01e3c5cf03e33c6c496c17ce6 /src/hwfeatures.c
parent9e1552517f68459a165ddebbba85e7cf37ff4f0c (diff)
downloadlibgcrypt-d8bdfa42ed582655c180e7db9b16d4e756a12a6e.tar.gz
Add x86_64 support for AES-NI
* cipher/rijndael.c [ENABLE_AESNI_SUPPORT]: Enable USE_AESNI on x86-64. (do_setkey) [USE_AESNI_is_disabled_here]: Use %[key] and %[ksch] directly as registers instead of using temporary register %%esi. [USE_AESNI] (do_aesni_enc_aligned, do_aesni_dec_aligned, do_aesni_cfb, do_aesni_ctr, do_aesni_ctr_4): Use %[key] directly as register instead of using temporary register %%esi. [USE_AESNI] (do_aesni_cfb, do_aesni_ctr, do_aesni_ctr_4): Change %[key] from generic "g" type to register "r". * src/hwfeatures.c (_gcry_detect_hw_features) [__x86_64__]: Do not clear AES-NI feature flag. -- AES-NI assembler uses %%esi for key-material pointer register. However %[key] can be marked as "r" (register) and automatically be 64bit on x86-64 and be 32bit on i386. So use %[key] for pointer register instead of %esi and that way make same AES-NI code work on both x86-64 and i386. [v2] - Add GNU style changelog - Fixed do_setkey changes, use %[ksch] for output instead of %[key] - Changed [key] assembler arguments from "g" to "r" to force use of registers in all cases (when tested v1, "g" did work as indented and %[key] mapped to register on i386 and x86-64, but that might not happen always). Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
Diffstat (limited to 'src/hwfeatures.c')
-rw-r--r--src/hwfeatures.c3
1 files changed, 0 insertions, 3 deletions
diff --git a/src/hwfeatures.c b/src/hwfeatures.c
index 606f3e7c..89d76859 100644
--- a/src/hwfeatures.c
+++ b/src/hwfeatures.c
@@ -292,9 +292,6 @@ _gcry_detect_hw_features (unsigned int disabled_features)
# ifdef __GNUC__
{
detect_x86_64_gnuc ();
- /* We don't have AESNI support for 64 bit yet. Thus we should not
- announce it. */
- hw_features &= ~HWF_INTEL_AESNI;
}
# endif
#endif