diff options
author | Werner Koch <[email protected]> | 2000-07-17 14:32:21 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2000-07-17 14:32:21 +0000 |
commit | 0bf44b072ca648336bca9cf1ec24ea9d257cea9a (patch) | |
tree | 92df532ce40c43627283e16bb5a06f39bd3a466c /mpi/longlong.h | |
parent | See ChangeLog: Fri Jul 14 19:38:23 CEST 2000 Werner Koch (diff) | |
download | gnupg-0bf44b072ca648336bca9cf1ec24ea9d257cea9a.tar.gz gnupg-0bf44b072ca648336bca9cf1ec24ea9d257cea9a.zip |
See ChangeLog: Mon Jul 17 16:35:47 CEST 2000 Werner Koch
Diffstat (limited to 'mpi/longlong.h')
-rw-r--r-- | mpi/longlong.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/mpi/longlong.h b/mpi/longlong.h index c92435570..e36beae49 100644 --- a/mpi/longlong.h +++ b/mpi/longlong.h @@ -199,6 +199,8 @@ extern UDItype __udiv_qrnnd (); "rI" ((USItype)(bh)), \ "r" ((USItype)(al)), \ "rI" ((USItype)(bl))) +#ifdef __ARM_ARCH_3__ +/* SAM This does not work on arm4 */ #define umul_ppmm(xh, xl, a, b) \ __asm__ ("%@ Inlined umul_ppmm mov %|r0, %2, lsr #16 @@ -218,6 +220,18 @@ extern UDItype __udiv_qrnnd (); : "r" ((USItype)(a)), \ "r" ((USItype)(b)) \ : "r0", "r1", "r2") +#elif __ARM_ARCH_4__ +#define umul_ppmm(xh, xl, a, b) \ + __asm__ ("%@ Inlined umul_ppmm + umull %r1, %r0, %r2, %r3" \ + : "=&r" ((USItype)(xh)), \ + "=r" ((USItype)(xl)) \ + : "r" ((USItype)(a)), \ + "r" ((USItype)(b)) \ + : "r0", "r1") +#else +#error Untested architecture +#endif #define UMUL_TIME 20 #define UDIV_TIME 100 #endif /* __arm__ */ |