]> git.pld-linux.org Git - packages/kernel.git/commitdiff
- fix 2.4.21 broken x86 math-emu
authorJan Rękorajski <baggins@pld-linux.org>
Fri, 4 Jul 2003 14:49:14 +0000 (14:49 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    linux-2.4.21-gcc33-math-emu.patch -> 1.1

linux-2.4.21-gcc33-math-emu.patch [new file with mode: 0644]

diff --git a/linux-2.4.21-gcc33-math-emu.patch b/linux-2.4.21-gcc33-math-emu.patch
new file mode 100644 (file)
index 0000000..ba62423
--- /dev/null
@@ -0,0 +1,105 @@
+As of today's "fix up gcc 3.3 bits" patch [1], x86 math emulation
+is now even more broken, since this latest patch has added some
+mismatched quotes while still failing to address the actual
+problems preventing this code from compiling with gcc 3.3.
+
+This patch, first sent to you on Jun 21st, fixes the missing
+semicolons and missing quotes in the x86 math-emu code, allowing
+it to compile with gcc 3.3.  I have updated things to also fix
+the mismatched quotes that were added today.  Unlike the patch
+you applied earlier today, my patch is actually tested...
+
+Please apply,
+
+ -Erik
+
+[1] http://www.kernel.org/diff/diffview.cgi?file=/pub/linux/kernel/v2.4/testing/cset/cset-alan@lxorguk.ukuu.org.uk|ChangeSet|20030701183359|14011.txt
+
+--
+Erik B. Andersen             http://codepoet-consulting.com/
+--This message was written using 73% post-consumer electrons--
+
+
+--- linux/arch/i386/math-emu/poly.h.orig       2003-07-01 20:39:49.000000000 -0600
++++ linux/arch/i386/math-emu/poly.h    2003-07-01 20:39:57.000000000 -0600
+@@ -64,7 +64,7 @@
+                                     const unsigned long arg2)
+ {
+   int retval;
+-  asm volatile ("mull %2; movl %%edx,%%eax" \
++  asm volatile ("mull %2; movl %%edx,%%eax; " \
+               :"=a" (retval) \
+               :"0" (arg1), "g" (arg2) \
+               :"dx");
+@@ -75,11 +75,11 @@
+ /* Add the 12 byte Xsig x2 to Xsig dest, with no checks for overflow. */
+ static inline void add_Xsig_Xsig(Xsig *dest, const Xsig *x2)
+ {
+-  asm volatile ("movl %1,%%edi; movl %2,%%esi;
+-                 movl (%%esi),%%eax; addl %%eax,(%%edi);
+-                 movl 4(%%esi),%%eax; adcl %%eax,4(%%edi);
+-                 movl 8(%%esi),%%eax; adcl %%eax,8(%%edi);"
+-                 :"=g" (*dest):"g" (dest), "g" (x2)
++  asm volatile ("movl %1,%%edi; movl %2,%%esi; " \
++                 "movl (%%esi),%%eax; addl %%eax,(%%edi); " \
++                 "movl 4(%%esi),%%eax; adcl %%eax,4(%%edi); " \
++                 "movl 8(%%esi),%%eax; adcl %%eax,8(%%edi); " \
++                 :"=g" (*dest):"g" (dest), "g" (x2) \
+                  :"ax","si","di");
+ }
+@@ -90,19 +90,19 @@
+    problem, but keep fingers crossed! */
+ static inline void add_two_Xsig(Xsig *dest, const Xsig *x2, long int *exp)
+ {
+-  asm volatile ("movl %2,%%ecx; movl %3,%%esi;
+-                 movl (%%esi),%%eax; addl %%eax,(%%ecx);
+-                 movl 4(%%esi),%%eax; adcl %%eax,4(%%ecx);
+-                 movl 8(%%esi),%%eax; adcl %%eax,8(%%ecx);
+-                 jnc 0f;
+-               rcrl 8(%%ecx); rcrl 4(%%ecx); rcrl (%%ecx)
+-                 movl %4,%%ecx; incl (%%ecx)
+-                 movl $1,%%eax; jmp 1f;
+-                 0: xorl %%eax,%%eax;
+-                 1:"
+-              :"=g" (*exp), "=g" (*dest)
+-              :"g" (dest), "g" (x2), "g" (exp)
+-              :"cx","si","ax");
++  asm volatile ("movl %2,%%ecx; movl %3,%%esi; " \
++                 "movl (%%esi),%%eax; addl %%eax,(%%ecx); " \
++                 "movl 4(%%esi),%%eax; adcl %%eax,4(%%ecx); " \
++                 "movl 8(%%esi),%%eax; adcl %%eax,8(%%ecx); " \
++                 "jnc 0f; " \
++               "rcrl 8(%%ecx); rcrl 4(%%ecx); rcrl (%%ecx); " \
++                 "movl %4,%%ecx; incl (%%ecx); " \
++                 "movl $1,%%eax; jmp 1f; " \
++                 "0: xorl %%eax,%%eax; " \
++                 "1: " \
++              :"=g" (*exp), "=g" (*dest) \
++              :"g" (dest), "g" (x2), "g" (exp) \
++              :"cx","si","ax"); 
+ }
+@@ -110,11 +110,11 @@
+ /* This is faster in a loop on my 386 than using the "neg" instruction. */
+ static inline void negate_Xsig(Xsig *x)
+ {
+-  asm volatile("movl %1,%%esi; "
+-               "xorl %%ecx,%%ecx; "
+-               "movl %%ecx,%%eax; subl (%%esi),%%eax; movl %%eax,(%%esi); "
+-               "movl %%ecx,%%eax; sbbl 4(%%esi),%%eax; movl %%eax,4(%%esi); "
+-               "movl %%ecx,%%eax; sbbl 8(%%esi),%%eax; movl %%eax,8(%%esi); "
++  asm volatile("movl %1,%%esi; " \
++               "xorl %%ecx,%%ecx; " \
++               "movl %%ecx,%%eax; subl (%%esi),%%eax; movl %%eax,(%%esi); " \
++               "movl %%ecx,%%eax; sbbl 4(%%esi),%%eax; movl %%eax,4(%%esi); " \
++               "movl %%ecx,%%eax; sbbl 8(%%esi),%%eax; movl %%eax,8(%%esi); " \
+                :"=g" (*x):"g" (x):"si","ax","cx");
+ }
+-
+To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
+the body of a message to majordomo@vger.kernel.org
+More majordomo info at  http://vger.kernel.org/majordomo-info.html
+Please read the FAQ at  http://www.tux.org/lkml/
This page took 2.254198 seconds and 4 git commands to generate.