Fixed bignum.c and bn_mul.h to support Thumb2 and LLVM compiler

This commit is contained in:
Paul Bakker 2013-06-14 11:36:56 +02:00
parent 67812d396c
commit 52b845be34
3 changed files with 12 additions and 3 deletions

View File

@ -24,6 +24,7 @@ Bugfix
instead of the x509parse_crt() wrapper that can also parse PEM instead of the x509parse_crt() wrapper that can also parse PEM
certificates certificates
* x509parse_crtpath() is now reentrant and uses more portable stat() * x509parse_crtpath() is now reentrant and uses more portable stat()
* Fixed bignum.c and bn_mul.h to support Thumb2 and LLVM compiler
= Version 1.2.7 released 2013-04-13 = Version 1.2.7 released 2013-04-13
Features Features

View File

@ -548,7 +548,7 @@
#if defined(__arm__) #if defined(__arm__)
#if defined(__thumb__) #if defined(__thumb__) && !defined(__thumb2__)
#define MULADDC_INIT \ #define MULADDC_INIT \
asm( \ asm( \

View File

@ -935,7 +935,15 @@ int mpi_sub_int( mpi *X, const mpi *A, t_sint b )
/* /*
* Helper for mpi multiplication * Helper for mpi multiplication
*/ */
static void mpi_mul_hlp( size_t i, t_uint *s, t_uint *d, t_uint b ) static
#if defined(__APPLE__) && defined(__arm__)
/*
* Apple LLVM version 4.2 (clang-425.0.24) (based on LLVM 3.2svn)
* appears to need this to prevent bad ARM code generation at -O3.
*/
__attribute__ ((noinline))
#endif
void mpi_mul_hlp( size_t i, t_uint *s, t_uint *d, t_uint b )
{ {
t_uint c = 0, t = 0; t_uint c = 0, t = 0;