forked from wolfSSL/wolfssl
fix arm thumb mode assembly
This commit is contained in:
@ -318,6 +318,36 @@ __asm__( \
|
|||||||
#define LOOP_START \
|
#define LOOP_START \
|
||||||
mu = c[x] * mp
|
mu = c[x] * mp
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __thumb__
|
||||||
|
|
||||||
|
#define INNERMUL \
|
||||||
|
__asm__( \
|
||||||
|
" LDR r0,%1 \n\t" \
|
||||||
|
" ADDS r0,r0,%0 \n\t" \
|
||||||
|
" ITE CS \n\t" \
|
||||||
|
" MOVCS %0,#1 \n\t" \
|
||||||
|
" MOVCC %0,#0 \n\t" \
|
||||||
|
" UMLAL r0,%0,%3,%4 \n\t" \
|
||||||
|
" STR r0,%1 \n\t" \
|
||||||
|
:"=r"(cy),"=m"(_c[0]):"0"(cy),"r"(mu),"r"(*tmpm++),"m"(_c[0]):"r0","cc");
|
||||||
|
|
||||||
|
#define PROPCARRY \
|
||||||
|
__asm__( \
|
||||||
|
" LDR r0,%1 \n\t" \
|
||||||
|
" ADDS r0,r0,%0 \n\t" \
|
||||||
|
" STR r0,%1 \n\t" \
|
||||||
|
" ITE CS \n\t" \
|
||||||
|
" MOVCS %0,#1 \n\t" \
|
||||||
|
" MOVCC %0,#0 \n\t" \
|
||||||
|
:"=r"(cy),"=m"(_c[0]):"0"(cy),"m"(_c[0]):"r0","cc");
|
||||||
|
|
||||||
|
|
||||||
|
/* TAO thumb mode uses ite (if then else) to detect carry directly
|
||||||
|
* fixed unmatched constraint warning by changing 1 to m */
|
||||||
|
|
||||||
|
#else /* __thumb__ */
|
||||||
|
|
||||||
#define INNERMUL \
|
#define INNERMUL \
|
||||||
__asm__( \
|
__asm__( \
|
||||||
" LDR r0,%1 \n\t" \
|
" LDR r0,%1 \n\t" \
|
||||||
@ -337,6 +367,8 @@ __asm__( \
|
|||||||
" MOVCC %0,#0 \n\t" \
|
" MOVCC %0,#0 \n\t" \
|
||||||
:"=r"(cy),"=m"(_c[0]):"0"(cy),"1"(_c[0]):"r0","cc");
|
:"=r"(cy),"=m"(_c[0]):"0"(cy),"1"(_c[0]):"r0","cc");
|
||||||
|
|
||||||
|
#endif /* __thumb__ */
|
||||||
|
|
||||||
#elif defined(TFM_PPC32)
|
#elif defined(TFM_PPC32)
|
||||||
|
|
||||||
/* PPC32 */
|
/* PPC32 */
|
||||||
@ -725,9 +757,11 @@ __asm__( \
|
|||||||
|
|
||||||
#define SQRADDSC(i, j) \
|
#define SQRADDSC(i, j) \
|
||||||
__asm__( \
|
__asm__( \
|
||||||
" UMULL %0,%1,%6,%7 \n\t" \
|
" UMULL %0,%1,%3,%4 \n\t" \
|
||||||
" SUB %2,%2,%2 \n\t" \
|
" SUB %2,%2,%2 \n\t" \
|
||||||
:"=r"(sc0), "=r"(sc1), "=r"(sc2) : "0"(sc0), "1"(sc1), "2"(sc2), "r"(i), "r"(j) : "cc");
|
:"=r"(sc0), "=r"(sc1), "=r"(sc2) : "r"(i), "r"(j) : "cc");
|
||||||
|
|
||||||
|
/* TAO removed sc0,1,2 as input to remove warning so %6,%7 become %3,%4 */
|
||||||
|
|
||||||
#define SQRADDAC(i, j) \
|
#define SQRADDAC(i, j) \
|
||||||
__asm__( \
|
__asm__( \
|
||||||
|
Reference in New Issue
Block a user