View | Details | Raw Unified | Return to bug 31309
Collapse All | Expand All

(-)a/src/libs/3rdparty/botan/botan.cpp (-1 / +15 lines)
Lines 1101-1106 class Montgomery_Exponentiator : public Modular_Exponentiator Link Here
1101
1101
1102
#if (BOTAN_MP_WORD_BITS != 32)
1102
#if (BOTAN_MP_WORD_BITS != 32)
1103
   #error The mp_x86_32 module requires that BOTAN_MP_WORD_BITS == 32
1103
   #error The mp_x86_32 module requires that BOTAN_MP_WORD_BITS == 32
1104
#elif !defined(BOTAN_TARGET_CPU_IS_X86_FAMILY)
1105
typedef Botan::u64bit dword;
1104
#endif
1106
#endif
1105
1107
1106
#ifdef Q_OS_UNIX
1108
#ifdef Q_OS_UNIX
Lines 1118-1123 extern "C" { Link Here
1118
*/
1120
*/
1119
inline word word_madd2(word a, word b, word* c)
1121
inline word word_madd2(word a, word b, word* c)
1120
   {
1122
   {
1123
#if defined(BOTAN_TARGET_CPU_IS_X86_FAMILY)
1121
   asm(
1124
   asm(
1122
      ASM("mull %[b]")
1125
      ASM("mull %[b]")
1123
      ASM("addl %[c],%[a]")
1126
      ASM("addl %[c],%[a]")
Lines 1127-1132 inline word word_madd2(word a, word b, word* c) Link Here
1127
      : "0"(a), "1"(b), [c]"g"(*c) : "cc");
1130
      : "0"(a), "1"(b), [c]"g"(*c) : "cc");
1128
1131
1129
   return a;
1132
   return a;
1133
#else
1134
   dword z = (dword)a * b + *c;
1135
   *c = (word)(z >> BOTAN_MP_WORD_BITS);
1136
   return (word)z;
1137
#endif
1130
   }
1138
   }
1131
1139
1132
/*
1140
/*
Lines 1134-1139 inline word word_madd2(word a, word b, word* c) Link Here
1134
*/
1142
*/
1135
inline word word_madd3(word a, word b, word c, word* d)
1143
inline word word_madd3(word a, word b, word c, word* d)
1136
   {
1144
   {
1145
#if defined(BOTAN_TARGET_CPU_IS_X86_FAMILY)
1137
   asm(
1146
   asm(
1138
      ASM("mull %[b]")
1147
      ASM("mull %[b]")
1139
1148
Lines 1147-1152 inline word word_madd3(word a, word b, word c, word* d) Link Here
1147
      : "0"(a), "1"(b), [c]"g"(c), [d]"g"(*d) : "cc");
1156
      : "0"(a), "1"(b), [c]"g"(c), [d]"g"(*d) : "cc");
1148
1157
1149
   return a;
1158
   return a;
1159
#else
1160
   dword z = (dword)a * b + c + *d;
1161
   *d = (word)(z >> BOTAN_MP_WORD_BITS);
1162
   return (word)z;
1163
#endif
1150
   }
1164
   }
1151
1165
1152
}
1166
}
Lines 2315-2321 namespace Botan { Link Here
2315
2329
2316
extern "C" {
2330
extern "C" {
2317
2331
2318
#ifdef Q_OS_UNIX
2332
#if defined(Q_OS_UNIX) && defined(BOTAN_TARGET_CPU_IS_X86_FAMILY)
2319
/*
2333
/*
2320
* Helper Macros for x86 Assembly
2334
* Helper Macros for x86 Assembly
2321
*/
2335
*/
(-)a/src/libs/3rdparty/botan/botan.h (+2 lines)
Lines 81-87 Link Here
81
#endif
81
#endif
82
82
83
#define BOTAN_TARGET_CPU_IS_LITTLE_ENDIAN
83
#define BOTAN_TARGET_CPU_IS_LITTLE_ENDIAN
84
#if !defined(__arm__)
84
#define BOTAN_TARGET_CPU_IS_X86_FAMILY
85
#define BOTAN_TARGET_CPU_IS_X86_FAMILY
86
#endif
85
#define BOTAN_TARGET_UNALIGNED_MEMORY_ACCESS_OK 1
87
#define BOTAN_TARGET_UNALIGNED_MEMORY_ACCESS_OK 1
86
88
87
#if defined(BOTAN_TARGET_CPU_IS_LITTLE_ENDIAN) || \
89
#if defined(BOTAN_TARGET_CPU_IS_LITTLE_ENDIAN) || \

Return to bug 31309