diff options
author | Jussi Kivilinna <jussi.kivilinna@mbnet.fi> | 2012-11-16 10:44:54 +0200 |
---|---|---|
committer | Werner Koch <wk@gnupg.org> | 2012-11-21 11:52:04 +0100 |
commit | d8bdfa42ed582655c180e7db9b16d4e756a12a6e (patch) | |
tree | 426d21eb013a1cd01e3c5cf03e33c6c496c17ce6 /src/hwfeatures.c | |
parent | 9e1552517f68459a165ddebbba85e7cf37ff4f0c (diff) | |
download | libgcrypt-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.c | 3 |
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 |