diff options
Diffstat (limited to 'lib/mpi')
| -rw-r--r-- | lib/mpi/longlong.h | 2 | ||||
| -rw-r--r-- | lib/mpi/mpi-inline.h | 2 | ||||
| -rw-r--r-- | lib/mpi/mpi-internal.h | 8 | ||||
| -rw-r--r-- | lib/mpi/mpicoder.c | 39 | 
4 files changed, 27 insertions, 24 deletions
diff --git a/lib/mpi/longlong.h b/lib/mpi/longlong.h index b90e255c2a68..93336502af08 100644 --- a/lib/mpi/longlong.h +++ b/lib/mpi/longlong.h @@ -216,7 +216,7 @@ extern UDItype __udiv_qrnnd(UDItype *, UDItype, UDItype, UDItype);  	__asm__ ("%@ Inlined umul_ppmm\n" \  		"umull %r1, %r0, %r2, %r3" \  	: "=&r" ((USItype)(xh)), \ -			"=r" ((USItype)(xl)) \ +			"=&r" ((USItype)(xl)) \  	: "r" ((USItype)(a)), \  			"r" ((USItype)(b)) \  	: "r0", "r1") diff --git a/lib/mpi/mpi-inline.h b/lib/mpi/mpi-inline.h index e2b39852b30a..c245ea31f785 100644 --- a/lib/mpi/mpi-inline.h +++ b/lib/mpi/mpi-inline.h @@ -30,7 +30,7 @@  #define G10_MPI_INLINE_H  #ifndef G10_MPI_INLINE_DECL -#define G10_MPI_INLINE_DECL  extern inline +#define G10_MPI_INLINE_DECL  static inline  #endif  G10_MPI_INLINE_DECL mpi_limb_t diff --git a/lib/mpi/mpi-internal.h b/lib/mpi/mpi-internal.h index c65dd1bff45a..7eceeddb3fb8 100644 --- a/lib/mpi/mpi-internal.h +++ b/lib/mpi/mpi-internal.h @@ -168,19 +168,19 @@ void mpi_rshift_limbs(MPI a, unsigned int count);  int mpi_lshift_limbs(MPI a, unsigned int count);  /*-- mpihelp-add.c --*/ -mpi_limb_t mpihelp_add_1(mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr, +static inline mpi_limb_t mpihelp_add_1(mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr,  			 mpi_size_t s1_size, mpi_limb_t s2_limb);  mpi_limb_t mpihelp_add_n(mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr,  			 mpi_ptr_t s2_ptr, mpi_size_t size); -mpi_limb_t mpihelp_add(mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr, mpi_size_t s1_size, +static inline mpi_limb_t mpihelp_add(mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr, mpi_size_t s1_size,  		       mpi_ptr_t s2_ptr, mpi_size_t s2_size);  /*-- mpihelp-sub.c --*/ -mpi_limb_t mpihelp_sub_1(mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr, +static inline mpi_limb_t mpihelp_sub_1(mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr,  			 mpi_size_t s1_size, mpi_limb_t s2_limb);  mpi_limb_t mpihelp_sub_n(mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr,  			 mpi_ptr_t s2_ptr, mpi_size_t size); -mpi_limb_t mpihelp_sub(mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr, mpi_size_t s1_size, +static inline mpi_limb_t mpihelp_sub(mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr, mpi_size_t s1_size,  		       mpi_ptr_t s2_ptr, mpi_size_t s2_size);  /*-- mpihelp-cmp.c --*/ diff --git a/lib/mpi/mpicoder.c b/lib/mpi/mpicoder.c index ec533a6c77b5..eb15e7dc7b65 100644 --- a/lib/mpi/mpicoder.c +++ b/lib/mpi/mpicoder.c @@ -128,6 +128,23 @@ leave:  }  EXPORT_SYMBOL_GPL(mpi_read_from_buffer); +static int count_lzeros(MPI a) +{ +	mpi_limb_t alimb; +	int i, lzeros = 0; + +	for (i = a->nlimbs - 1; i >= 0; i--) { +		alimb = a->d[i]; +		if (alimb == 0) { +			lzeros += sizeof(mpi_limb_t); +		} else { +			lzeros += count_leading_zeros(alimb) / 8; +			break; +		} +	} +	return lzeros; +} +  /**   * mpi_read_buffer() - read MPI to a bufer provided by user (msb first)   * @@ -148,7 +165,7 @@ int mpi_read_buffer(MPI a, uint8_t *buf, unsigned buf_len, unsigned *nbytes,  	uint8_t *p;  	mpi_limb_t alimb;  	unsigned int n = mpi_get_size(a); -	int i, lzeros = 0; +	int i, lzeros;  	if (!buf || !nbytes)  		return -EINVAL; @@ -156,14 +173,7 @@ int mpi_read_buffer(MPI a, uint8_t *buf, unsigned buf_len, unsigned *nbytes,  	if (sign)  		*sign = a->sign; -	p = (void *)&a->d[a->nlimbs] - 1; - -	for (i = a->nlimbs * sizeof(alimb) - 1; i >= 0; i--, p--) { -		if (!*p) -			lzeros++; -		else -			break; -	} +	lzeros = count_lzeros(a);  	if (buf_len < n - lzeros) {  		*nbytes = n - lzeros; @@ -351,7 +361,7 @@ int mpi_write_to_sgl(MPI a, struct scatterlist *sgl, unsigned *nbytes,  	u8 *p, *p2;  	mpi_limb_t alimb, alimb2;  	unsigned int n = mpi_get_size(a); -	int i, x, y = 0, lzeros = 0, buf_len; +	int i, x, y = 0, lzeros, buf_len;  	if (!nbytes)  		return -EINVAL; @@ -359,14 +369,7 @@ int mpi_write_to_sgl(MPI a, struct scatterlist *sgl, unsigned *nbytes,  	if (sign)  		*sign = a->sign; -	p = (void *)&a->d[a->nlimbs] - 1; - -	for (i = a->nlimbs * sizeof(alimb) - 1; i >= 0; i--, p--) { -		if (!*p) -			lzeros++; -		else -			break; -	} +	lzeros = count_lzeros(a);  	if (*nbytes < n - lzeros) {  		*nbytes = n - lzeros;  | 
