diff options
author | Tony Theodore <tonyt@logyst.com> | 2016-01-09 00:34:58 (GMT) |
---|---|---|
committer | Tony Theodore <tonyt@logyst.com> | 2016-01-12 08:41:40 (GMT) |
commit | f5414c6002fdf70e1e562c83afed54fd2ed44864 (patch) | |
tree | d303b1c6bac313b776529871dfcfe3a53722f435 /src/liboil-1-fixes.patch | |
parent | a449841274217582a15c11f560944853c910b30b (diff) | |
download | mxe-f5414c6002fdf70e1e562c83afed54fd2ed44864.zip mxe-f5414c6002fdf70e1e562c83afed54fd2ed44864.tar.gz mxe-f5414c6002fdf70e1e562c83afed54fd2ed44864.tar.bz2 |
liboil: enable shared and x86_64-w64-mingw32 build
Diffstat (limited to 'src/liboil-1-fixes.patch')
-rw-r--r-- | src/liboil-1-fixes.patch | 163 |
1 files changed, 163 insertions, 0 deletions
diff --git a/src/liboil-1-fixes.patch b/src/liboil-1-fixes.patch new file mode 100644 index 0000000..a14b92d --- /dev/null +++ b/src/liboil-1-fixes.patch @@ -0,0 +1,163 @@ +This file is part of MXE. +See index.html for further information. + +Contains ad hoc patches for cross building. + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: David Schleef <ds@schleef.org> +Date: Tue, 20 Jul 2010 14:05:26 -0700 +Subject: [PATCH] x86: Fix cpuid function on x86-64 + +Taken from: +http://cgit.freedesktop.org/liboil/commit/?id=705916007fba0a845229a02dc6474cb523eff150 + +diff --git a/liboil/liboilcpu-x86.c b/liboil/liboilcpu-x86.c +index 1111111..2222222 100644 +--- a/liboil/liboilcpu-x86.c ++++ b/liboil/liboilcpu-x86.c +@@ -162,13 +162,10 @@ get_cpuid (uint32_t op, uint32_t *a, uint32_t *b, uint32_t *c, uint32_t *d) + static void + get_cpuid (uint32_t op, uint32_t *a, uint32_t *b, uint32_t *c, uint32_t *d) + { ++ *a = op; + __asm__ ( +- " pushq %%rbx\n" + " cpuid\n" +- " mov %%ebx, %%esi\n" +- " popq %%rbx\n" +- : "=a" (*a), "=S" (*b), "=c" (*c), "=d" (*d) +- : "0" (op)); ++ : "+a" (*a), "=b" (*b), "=c" (*c), "=d" (*d)); + } + #endif + +@@ -185,7 +182,7 @@ oil_cpu_detect_cpuid (void) + { + uint32_t eax, ebx, ecx, edx; + uint32_t level; +- char vendor[13] = { 0 }; ++ char vendor[13+4] = { 0 }; + int ret; + + oil_fault_check_enable (); + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Tony Theodore <tonyt@logyst.com> +Date: Sat, 9 Jan 2016 11:21:30 +1100 +Subject: [PATCH] Win64 Support + +Taken from: +https://bugs.freedesktop.org/show_bug.cgi?id=26651 + +diff --git a/liboil/amd64/wavelet.c b/liboil/amd64/wavelet.c +index 1111111..2222222 100644 +--- a/liboil/amd64/wavelet.c ++++ b/liboil/amd64/wavelet.c +@@ -2,7 +2,7 @@ + #include <liboil/liboilfunction.h> + #include <liboil/liboilclasses.h> + #include <stddef.h> +- ++#include <stdint.h> + + void + deinterleave2_asm (int16_t *d1, int16_t *d2, int16_t *s_2xn, int n) +@@ -1409,7 +1409,7 @@ multiply_and_acc_12xn_s16_u8_mmx (int16_t *i1, int is1, int16_t *s1, + " jnz 1b\n" + " emms\n" + : "+r" (i1), "+r" (s1), "+r" (s2), "+r" (n) +- : "r" ((long)is1), "r" ((long)ss1), "r" ((long)ss2) ++ : "r" ((intptr_t)is1), "r" ((intptr_t)ss1), "r" ((intptr_t)ss2) + ); + } + OIL_DEFINE_IMPL_FULL (multiply_and_acc_12xn_s16_u8_mmx, +@@ -1596,7 +1596,7 @@ mas4_across_add_s16_mmx (int16_t *d, int16_t *s1, int16_t *s2_nx4, int sstr2, + [s2_nx4_off] "+r" (s2_nx4_off), + [n] "+m" (n), + [s1] "+r" (s1) +- : [sstr] "r" ((long)(sstr2)) ++ : [sstr] "r" ((intptr_t)(sstr2)) + ); + } + OIL_DEFINE_IMPL_FULL (mas4_across_add_s16_mmx, mas4_across_add_s16, +@@ -1753,8 +1753,8 @@ mas8_across_add_s16_mmx (int16_t *d, int16_t *s1, int16_t *s2_nx8, int sstr2, + [s3_8] "+r" (s3_8), + [d] "+r" (d), + [n] "+m" (n), +- [s1] "+r" ((long)(s1)) +- : [sstr] "r" ((long)(sstr2)) ++ [s1] "+r" ((intptr_t)(s1)) ++ : [sstr] "r" ((intptr_t)(sstr2)) + ); + } + OIL_DEFINE_IMPL_FULL (mas8_across_add_s16_mmx, mas8_across_add_s16, +diff --git a/liboil/i386_amd64/mas.c b/liboil/i386_amd64/mas.c +index 1111111..2222222 100644 +--- a/liboil/i386_amd64/mas.c ++++ b/liboil/i386_amd64/mas.c +@@ -1,7 +1,7 @@ + + #include <liboil/liboilfunction.h> + #include <liboil/liboilclasses.h> +- ++#include <stdint.h> + + void + mas10_u8_mmx (uint8_t *d, const uint8_t *s1_np9, const int16_t *s2_10, +@@ -1106,7 +1106,7 @@ mas8_across_u8_mmx_3 (uint8_t *d, const uint8_t *s1_nx8, int ss1, + " packuswb %%mm2, %%mm2\n" + " movd %%mm2, 0(%[d])\n" + : [p] "+r" (p) +- : [d] "r" (d), [ss1] "r" ((long)ss1)); ++ : [d] "r" (d), [ss1] "r" ((intptr_t)ss1)); + d+=4; + s1_nx8+=4; + n--; +diff --git a/liboil/i386_amd64/multiply_and_acc.c b/liboil/i386_amd64/multiply_and_acc.c +index 1111111..2222222 100644 +--- a/liboil/i386_amd64/multiply_and_acc.c ++++ b/liboil/i386_amd64/multiply_and_acc.c +@@ -1,6 +1,7 @@ + + #include <liboil/liboilfunction.h> + #include <liboil/liboilclasses.h> ++#include <stdint.h> + + void + multiply_and_acc_6xn_s16_u8_mmx (int16_t *i1, int is1, int16_t *s1, +@@ -32,7 +33,7 @@ multiply_and_acc_6xn_s16_u8_mmx (int16_t *i1, int is1, int16_t *s1, + #ifdef __i386__ + : "m" (is1), "m" (ss1), "m" (ss2) + #else +- : "r" ((long)is1), "r" ((long)ss1), "r" ((long)ss2) ++ : "r" ((intptr_t)is1), "r" ((intptr_t)ss1), "r" ((intptr_t)ss2) + #endif + ); + } +@@ -68,7 +69,7 @@ multiply_and_acc_8xn_s16_u8_mmx (int16_t *i1, int is1, int16_t *s1, + #ifdef __i386__ + : "m" (is1), "m" (ss1), "m" (ss2) + #else +- : "r" ((long)is1), "r" ((long)ss1), "r" ((long)ss2) ++ : "r" ((intptr_t)is1), "r" ((intptr_t)ss1), "r" ((intptr_t)ss2) + #endif + ); + } +@@ -114,7 +115,7 @@ multiply_and_acc_16xn_s16_u8_mmx (int16_t *i1, int is1, int16_t *s1, + #ifdef __i386__ + : "m" (is1), "m" (ss1), "m" (ss2) + #else +- : "r" ((long)is1), "r" ((long)ss1), "r" ((long)ss2) ++ : "r" ((intptr_t)is1), "r" ((intptr_t)ss1), "r" ((intptr_t)ss2) + #endif + ); + } +@@ -170,7 +171,7 @@ multiply_and_acc_24xn_s16_u8_mmx (int16_t *i1, int is1, int16_t *s1, + #ifdef __i386__ + : "m" (is1), "m" (ss1), "m" (ss2) + #else +- : "r" ((long)is1), "r" ((long)ss1), "r" ((long)ss2) ++ : "r" ((intptr_t)is1), "r" ((intptr_t)ss1), "r" ((intptr_t)ss2) + #endif + ); + } |