mirror of
https://github.com/yuzu-emu/mbedtls.git
synced 2024-11-26 07:35:42 +01:00
Fix for MPI divide on MSVC
Resolves multiple platform issues when building bignum.c with Microsoft Visual Studio.
This commit is contained in:
parent
a39690e7bf
commit
d7fe6fbd76
@ -152,6 +152,7 @@ typedef uint32_t t_udbl;
|
|||||||
#define POLARSSL_HAVE_INT64
|
#define POLARSSL_HAVE_INT64
|
||||||
typedef int64_t t_sint;
|
typedef int64_t t_sint;
|
||||||
typedef uint64_t t_uint;
|
typedef uint64_t t_uint;
|
||||||
|
/* mbedtls_t_udbl defined as 128-bit unsigned int */
|
||||||
typedef unsigned int t_udbl __attribute__((mode(TI)));
|
typedef unsigned int t_udbl __attribute__((mode(TI)));
|
||||||
#define POLARSSL_HAVE_UDBL
|
#define POLARSSL_HAVE_UDBL
|
||||||
#else
|
#else
|
||||||
|
@ -1226,10 +1226,11 @@ static t_uint int_div_int( t_uint u1, t_uint u0, t_uint d, t_uint *r )
|
|||||||
#if defined(POLARSSL_HAVE_UDBL)
|
#if defined(POLARSSL_HAVE_UDBL)
|
||||||
t_udbl dividend, quotient;
|
t_udbl dividend, quotient;
|
||||||
#else
|
#else
|
||||||
const t_uint radix = 1 << biH;
|
const t_uint radix = (t_uint) 1 << biH;
|
||||||
|
const t_uint uint_halfword_mask = ( (t_uint) 1 << biH ) - 1;
|
||||||
t_uint d0, d1, q0, q1, rAX, r0, quotient;
|
t_uint d0, d1, q0, q1, rAX, r0, quotient;
|
||||||
t_uint u0_msw, u0_lsw;
|
t_uint u0_msw, u0_lsw;
|
||||||
int s;
|
size_t s;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1250,7 +1251,7 @@ static t_uint int_div_int( t_uint u1, t_uint u0, t_uint d, t_uint *r )
|
|||||||
quotient = ( (t_udbl) 1 << biL ) - 1;
|
quotient = ( (t_udbl) 1 << biL ) - 1;
|
||||||
|
|
||||||
if( r != NULL )
|
if( r != NULL )
|
||||||
*r = dividend - (quotient * d);
|
*r = (t_uint)( dividend - (quotient * d ) );
|
||||||
|
|
||||||
return (t_uint) quotient;
|
return (t_uint) quotient;
|
||||||
#else
|
#else
|
||||||
@ -1267,14 +1268,14 @@ static t_uint int_div_int( t_uint u1, t_uint u0, t_uint d, t_uint *r )
|
|||||||
d = d << s;
|
d = d << s;
|
||||||
|
|
||||||
u1 = u1 << s;
|
u1 = u1 << s;
|
||||||
u1 |= ( u0 >> ( 32 - s ) ) & ( -s >> 31 );
|
u1 |= ( u0 >> ( biL - s ) ) & ( -(t_sint)s >> ( biL - 1 ) );
|
||||||
u0 = u0 << s;
|
u0 = u0 << s;
|
||||||
|
|
||||||
d1 = d >> biH;
|
d1 = d >> biH;
|
||||||
d0 = d & 0xffff;
|
d0 = d & uint_halfword_mask;
|
||||||
|
|
||||||
u0_msw = u0 >> biH;
|
u0_msw = u0 >> biH;
|
||||||
u0_lsw = u0 & 0xffff;
|
u0_lsw = u0 & uint_halfword_mask;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Find the first quotient and remainder
|
* Find the first quotient and remainder
|
||||||
|
Loading…
Reference in New Issue
Block a user