summaryrefslogtreecommitdiffstats
path: root/meta-oe/recipes-qt/qt-creator/qt-creator/fix.missing.cpuid.h.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-oe/recipes-qt/qt-creator/qt-creator/fix.missing.cpuid.h.patch')
-rw-r--r--meta-oe/recipes-qt/qt-creator/qt-creator/fix.missing.cpuid.h.patch384
1 files changed, 384 insertions, 0 deletions
diff --git a/meta-oe/recipes-qt/qt-creator/qt-creator/fix.missing.cpuid.h.patch b/meta-oe/recipes-qt/qt-creator/qt-creator/fix.missing.cpuid.h.patch
new file mode 100644
index 000000000..363bee3e7
--- /dev/null
+++ b/meta-oe/recipes-qt/qt-creator/qt-creator/fix.missing.cpuid.h.patch
@@ -0,0 +1,384 @@
1From 8be071bbca6a9b8e06a7466d848a2b4b6dbcbc1f Mon Sep 17 00:00:00 2001
2From: Christian Kandeler <christian.kandeler@digia.com>
3Date: Fri, 19 Jul 2013 13:40:30 +0200
4Subject: [PATCH] WIP: Remove x86 assembler code from botan sources.
5
6Taken from
7https://bugreports.qt-project.org/browse/QTCREATORBUG-8107
8
9Upstream-Status: Submitted
10
11Change-Id: I3780aa4551f563c5f43833ec822e3c1add7012f2
12---
13 src/libs/3rdparty/botan/botan.cpp | 297 +++-----------------------------------
14 src/libs/3rdparty/botan/botan.h | 4 +-
15 2 files changed, 18 insertions(+), 283 deletions(-)
16
17diff --git a/src/libs/3rdparty/botan/botan.cpp b/src/libs/3rdparty/botan/botan.cpp
18index 917c385..c515750 100644
19--- a/src/libs/3rdparty/botan/botan.cpp
20+++ b/src/libs/3rdparty/botan/botan.cpp
21@@ -1098,35 +1098,31 @@ class Montgomery_Exponentiator : public Modular_Exponentiator
22
23 }
24
25-
26-#if (BOTAN_MP_WORD_BITS != 32)
27- #error The mp_x86_32 module requires that BOTAN_MP_WORD_BITS == 32
28+#if (BOTAN_MP_WORD_BITS == 8)
29+typedef Botan::u16bit dword;
30+#elif (BOTAN_MP_WORD_BITS == 16)
31+typedef Botan::u32bit dword;
32+#elif (BOTAN_MP_WORD_BITS == 32)
33+typedef Botan::u64bit dword;
34+#elif (BOTAN_MP_WORD_BITS == 64)
35+#error BOTAN_MP_WORD_BITS can be 64 only with assembly support
36+#else
37+#error BOTAN_MP_WORD_BITS must be 8, 16, 32, or 64
38 #endif
39
40-#ifdef Q_OS_UNIX
41+
42 namespace Botan {
43
44 extern "C" {
45
46 /*
47-* Helper Macros for x86 Assembly
48-*/
49-#define ASM(x) x "\n\t"
50-
51-/*
52 * Word Multiply
53 */
54 inline word word_madd2(word a, word b, word* c)
55 {
56- asm(
57- ASM("mull %[b]")
58- ASM("addl %[c],%[a]")
59- ASM("adcl $0,%[carry]")
60-
61- : [a]"=a"(a), [b]"=rm"(b), [carry]"=&d"(*c)
62- : "0"(a), "1"(b), [c]"g"(*c) : "cc");
63-
64- return a;
65+ dword z = (dword)a * b + *c;
66+ *c = (word)(z >> BOTAN_MP_WORD_BITS);
67+ return (word)z;
68 }
69
70 /*
71@@ -1134,25 +1130,12 @@ inline word word_madd2(word a, word b, word* c)
72 */
73 inline word word_madd3(word a, word b, word c, word* d)
74 {
75- asm(
76- ASM("mull %[b]")
77-
78- ASM("addl %[c],%[a]")
79- ASM("adcl $0,%[carry]")
80-
81- ASM("addl %[d],%[a]")
82- ASM("adcl $0,%[carry]")
83-
84- : [a]"=a"(a), [b]"=rm"(b), [carry]"=&d"(*d)
85- : "0"(a), "1"(b), [c]"g"(c), [d]"g"(*d) : "cc");
86-
87- return a;
88+ dword z = (dword)a * b + c + *d;
89+ *d = (word)(z >> BOTAN_MP_WORD_BITS);
90+ return (word)z;
91 }
92-
93 }
94-
95 }
96-#endif
97
98
99
100@@ -1704,30 +1687,6 @@ void unlock_mem(void* addr, size_t length);
101
102 namespace Botan {
103
104-extern "C" {
105-
106-/*
107-* Word Multiply/Add
108-*/
109-inline word word_madd2(word a, word b, word* c)
110- {
111- dword z = (dword)a * b + *c;
112- *c = (word)(z >> BOTAN_MP_WORD_BITS);
113- return (word)z;
114- }
115-
116-/*
117-* Word Multiply/Add
118-*/
119-inline word word_madd3(word a, word b, word c, word* d)
120- {
121- dword z = (dword)a * b + c + *d;
122- *d = (word)(z >> BOTAN_MP_WORD_BITS);
123- return (word)z;
124- }
125-
126-}
127-
128 /**
129 * Win32 CAPI Entropy Source
130 */
131@@ -2315,225 +2274,6 @@ namespace Botan {
132
133 extern "C" {
134
135-#ifdef Q_OS_UNIX
136-/*
137-* Helper Macros for x86 Assembly
138-*/
139-#ifndef ASM
140- #define ASM(x) x "\n\t"
141-#endif
142-
143-#define ADDSUB2_OP(OPERATION, INDEX) \
144- ASM("movl 4*" #INDEX "(%[y]), %[carry]") \
145- ASM(OPERATION " %[carry], 4*" #INDEX "(%[x])") \
146-
147-#define ADDSUB3_OP(OPERATION, INDEX) \
148- ASM("movl 4*" #INDEX "(%[x]), %[carry]") \
149- ASM(OPERATION " 4*" #INDEX "(%[y]), %[carry]") \
150- ASM("movl %[carry], 4*" #INDEX "(%[z])") \
151-
152-#define LINMUL_OP(WRITE_TO, INDEX) \
153- ASM("movl 4*" #INDEX "(%[x]),%%eax") \
154- ASM("mull %[y]") \
155- ASM("addl %[carry],%%eax") \
156- ASM("adcl $0,%%edx") \
157- ASM("movl %%edx,%[carry]") \
158- ASM("movl %%eax, 4*" #INDEX "(%[" WRITE_TO "])")
159-
160-#define MULADD_OP(IGNORED, INDEX) \
161- ASM("movl 4*" #INDEX "(%[x]),%%eax") \
162- ASM("mull %[y]") \
163- ASM("addl %[carry],%%eax") \
164- ASM("adcl $0,%%edx") \
165- ASM("addl 4*" #INDEX "(%[z]),%%eax") \
166- ASM("adcl $0,%%edx") \
167- ASM("movl %%edx,%[carry]") \
168- ASM("movl %%eax, 4*" #INDEX " (%[z])")
169-
170-#define DO_8_TIMES(MACRO, ARG) \
171- MACRO(ARG, 0) \
172- MACRO(ARG, 1) \
173- MACRO(ARG, 2) \
174- MACRO(ARG, 3) \
175- MACRO(ARG, 4) \
176- MACRO(ARG, 5) \
177- MACRO(ARG, 6) \
178- MACRO(ARG, 7)
179-
180-#define ADD_OR_SUBTRACT(CORE_CODE) \
181- ASM("rorl %[carry]") \
182- CORE_CODE \
183- ASM("sbbl %[carry],%[carry]") \
184- ASM("negl %[carry]")
185-
186-/*
187-* Word Addition
188-*/
189-inline word word_add(word x, word y, word* carry)
190- {
191- asm(
192- ADD_OR_SUBTRACT(ASM("adcl %[y],%[x]"))
193- : [x]"=r"(x), [carry]"=r"(*carry)
194- : "0"(x), [y]"rm"(y), "1"(*carry)
195- : "cc");
196- return x;
197- }
198-
199-/*
200-* Eight Word Block Addition, Two Argument
201-*/
202-inline word word8_add2(word x[8], const word y[8], word carry)
203- {
204- asm(
205- ADD_OR_SUBTRACT(DO_8_TIMES(ADDSUB2_OP, "adcl"))
206- : [carry]"=r"(carry)
207- : [x]"r"(x), [y]"r"(y), "0"(carry)
208- : "cc", "memory");
209- return carry;
210- }
211-
212-/*
213-* Eight Word Block Addition, Three Argument
214-*/
215-inline word word8_add3(word z[8], const word x[8], const word y[8], word carry)
216- {
217- asm(
218- ADD_OR_SUBTRACT(DO_8_TIMES(ADDSUB3_OP, "adcl"))
219- : [carry]"=r"(carry)
220- : [x]"r"(x), [y]"r"(y), [z]"r"(z), "0"(carry)
221- : "cc", "memory");
222- return carry;
223- }
224-
225-/*
226-* Word Subtraction
227-*/
228-inline word word_sub(word x, word y, word* carry)
229- {
230- asm(
231- ADD_OR_SUBTRACT(ASM("sbbl %[y],%[x]"))
232- : [x]"=r"(x), [carry]"=r"(*carry)
233- : "0"(x), [y]"rm"(y), "1"(*carry)
234- : "cc");
235- return x;
236- }
237-
238-/*
239-* Eight Word Block Subtraction, Two Argument
240-*/
241-inline word word8_sub2(word x[8], const word y[8], word carry)
242- {
243- asm(
244- ADD_OR_SUBTRACT(DO_8_TIMES(ADDSUB2_OP, "sbbl"))
245- : [carry]"=r"(carry)
246- : [x]"r"(x), [y]"r"(y), "0"(carry)
247- : "cc", "memory");
248- return carry;
249- }
250-
251-/*
252-* Eight Word Block Subtraction, Two Argument
253-*/
254-inline word word8_sub2_rev(word x[8], const word y[8], word carry)
255- {
256- asm(
257- ADD_OR_SUBTRACT(DO_8_TIMES(ADDSUB3_OP, "sbbl"))
258- : [carry]"=r"(carry)
259- : [x]"r"(y), [y]"r"(x), [z]"r"(x), "0"(carry)
260- : "cc", "memory");
261- return carry;
262- }
263-
264-/*
265-* Eight Word Block Subtraction, Three Argument
266-*/
267-inline word word8_sub3(word z[8], const word x[8], const word y[8], word carry)
268- {
269- asm(
270- ADD_OR_SUBTRACT(DO_8_TIMES(ADDSUB3_OP, "sbbl"))
271- : [carry]"=r"(carry)
272- : [x]"r"(x), [y]"r"(y), [z]"r"(z), "0"(carry)
273- : "cc", "memory");
274- return carry;
275- }
276-
277-/*
278-* Eight Word Block Linear Multiplication
279-*/
280-inline word word8_linmul2(word x[8], word y, word carry)
281- {
282- asm(
283- DO_8_TIMES(LINMUL_OP, "x")
284- : [carry]"=r"(carry)
285- : [x]"r"(x), [y]"rm"(y), "0"(carry)
286- : "cc", "%eax", "%edx");
287- return carry;
288- }
289-
290-/*
291-* Eight Word Block Linear Multiplication
292-*/
293-inline word word8_linmul3(word z[8], const word x[8], word y, word carry)
294- {
295- asm(
296- DO_8_TIMES(LINMUL_OP, "z")
297- : [carry]"=r"(carry)
298- : [z]"r"(z), [x]"r"(x), [y]"rm"(y), "0"(carry)
299- : "cc", "%eax", "%edx");
300- return carry;
301- }
302-
303-/*
304-* Eight Word Block Multiply/Add
305-*/
306-inline word word8_madd3(word z[8], const word x[8], word y, word carry)
307- {
308- asm(
309- DO_8_TIMES(MULADD_OP, "")
310- : [carry]"=r"(carry)
311- : [z]"r"(z), [x]"r"(x), [y]"rm"(y), "0"(carry)
312- : "cc", "%eax", "%edx");
313- return carry;
314- }
315-
316-/*
317-* Multiply-Add Accumulator
318-*/
319-inline void word3_muladd(word* w2, word* w1, word* w0, word x, word y)
320- {
321- asm(
322- ASM("mull %[y]")
323-
324- ASM("addl %[x],%[w0]")
325- ASM("adcl %[y],%[w1]")
326- ASM("adcl $0,%[w2]")
327-
328- : [w0]"=r"(*w0), [w1]"=r"(*w1), [w2]"=r"(*w2)
329- : [x]"a"(x), [y]"d"(y), "0"(*w0), "1"(*w1), "2"(*w2)
330- : "cc");
331- }
332-
333-/*
334-* Multiply-Add Accumulator
335-*/
336-inline void word3_muladd_2(word* w2, word* w1, word* w0, word x, word y)
337- {
338- asm(
339- ASM("mull %[y]")
340-
341- ASM("addl %[x],%[w0]")
342- ASM("adcl %[y],%[w1]")
343- ASM("adcl $0,%[w2]")
344-
345- ASM("addl %[x],%[w0]")
346- ASM("adcl %[y],%[w1]")
347- ASM("adcl $0,%[w2]")
348-
349- : [w0]"=r"(*w0), [w1]"=r"(*w1), [w2]"=r"(*w2)
350- : [x]"a"(x), [y]"d"(y), "0"(*w0), "1"(*w1), "2"(*w2)
351- : "cc");
352- }
353-#else
354 /*
355 * Word Addition
356 */
357@@ -2718,9 +2458,6 @@ inline void word3_muladd_2(word* w2, word* w1, word* w0, word a, word b)
358 *w1 = word_add(*w1, b, &carry);
359 *w2 = word_add(*w2, top, &carry);
360 }
361-
362-#endif
363-
364 }
365
366 }
367diff --git a/src/libs/3rdparty/botan/botan.h b/src/libs/3rdparty/botan/botan.h
368index 6a9cbe0..3a66a14 100644
369--- a/src/libs/3rdparty/botan/botan.h
370+++ b/src/libs/3rdparty/botan/botan.h
371@@ -80,9 +80,7 @@
372 #define BOTAN_GCC_VERSION 0
373 #endif
374
375-#define BOTAN_TARGET_CPU_IS_LITTLE_ENDIAN
376-#define BOTAN_TARGET_CPU_IS_X86_FAMILY
377-#define BOTAN_TARGET_UNALIGNED_MEMORY_ACCESS_OK 1
378+#define BOTAN_TARGET_UNALIGNED_MEMORY_ACCESS_OK 0
379
380 #if defined(BOTAN_TARGET_CPU_IS_LITTLE_ENDIAN) || \
381 defined(BOTAN_TARGET_CPU_IS_BIG_ENDIAN)
382--
3831.8.3.2
384