2adb375c50
Motivation is similar to NO_UDBL_DIVISION. The alternative implementation of 64-bit mult is straightforward and aims at obvious correctness. Also, visual examination of the generate assembly show that it's quite efficient with clang, armcc5 and arm-clang. However current GCC generates fairly inefficient code for it. I tried to rework the code in order to make GCC generate more efficient code. Unfortunately the only way to do that is to get rid of 64-bit add and handle the carry manually, but this causes other compilers to generate less efficient code with branches, which is not acceptable from a side-channel point of view. So let's keep the obvious code that works for most compilers and hope future versions of GCC learn to manage registers in a sensible way in that context. See https://bugs.launchpad.net/gcc-arm-embedded/+bug/1775263 |
||
---|---|---|
.. | ||
all.sh | ||
basic-build-test.sh | ||
check-doxy-blocks.pl | ||
check-generated-files.sh | ||
check-names.sh | ||
curves.pl | ||
depends-hashes.pl | ||
depends-pkalgs.pl | ||
doxygen.sh | ||
gen_ctr_drbg.pl | ||
gen_gcm_decrypt.pl | ||
gen_gcm_encrypt.pl | ||
gen_pkcs1_v21_sign_verify.pl | ||
generate-afl-tests.sh | ||
generate_code.pl | ||
key-exchanges.pl | ||
list-enum-consts.pl | ||
list-identifiers.sh | ||
list-macros.sh | ||
list-symbols.sh | ||
recursion.pl | ||
run-test-suites.pl | ||
tcp_client.pl | ||
test-ref-configs.pl | ||
test_zeroize.gdb | ||
travis-log-failure.sh | ||
yotta-build.sh |