diff options
author | lioux <lioux@FreeBSD.org> | 2002-02-10 13:11:13 +0000 |
---|---|---|
committer | lioux <lioux@FreeBSD.org> | 2002-02-10 13:11:13 +0000 |
commit | feff86d6202df8c7a435151a00c710eea0ad38ff (patch) | |
tree | 85bec6d09f4ab9c57ea256eccbcdc03775bc253f | |
parent | cffb5b405033fdac9de3e5854e52c85f9e35377f (diff) | |
download | FreeBSD-ports-feff86d6202df8c7a435151a00c710eea0ad38ff.zip FreeBSD-ports-feff86d6202df8c7a435151a00c710eea0ad38ff.tar.gz |
Apply asm patch to work around bug exposed in Athlon + gcc (2.9x).
Also happens in other systems
Submitted by: Matthew Reimer <mreimer@vpop.net>
Obtained from: Quasar DV Codec Project
-rw-r--r-- | graphics/libdv/files/patch-libdv:mmx.h | 25 | ||||
-rw-r--r-- | multimedia/libdv/files/patch-libdv:mmx.h | 25 |
2 files changed, 50 insertions, 0 deletions
diff --git a/graphics/libdv/files/patch-libdv:mmx.h b/graphics/libdv/files/patch-libdv:mmx.h new file mode 100644 index 0000000..7033e57 --- /dev/null +++ b/graphics/libdv/files/patch-libdv:mmx.h @@ -0,0 +1,25 @@ +--- libdv/mmx.h.orig Thu Apr 26 16:08:25 2001 ++++ libdv/mmx.h Sun Feb 10 11:03:54 2002 +@@ -72,6 +72,9 @@ + __asm__ __volatile__ ( + /* See if CPUID instruction is supported ... */ + /* ... Get copies of EFLAGS into eax and ecx */ ++ "pushl %%ebx\n\t" ++ "pushl %%ecx\n\t" ++ "pushl %%edx\n\t" + "pushf\n\t" + "popl %%eax\n\t" + "movl %%eax, %%ecx\n\t" +@@ -207,9 +210,11 @@ + "movl $0, %0\n\n\t" + + "Return:\n\t" ++ "popl %%edx\n\t" ++ "popl %%ecx\n\t" ++ "popl %%ebx\n\t" + : "=a" (rval) + : /* no input */ +- : "ebx", "ecx", "edx" + ); + + /* Return */ diff --git a/multimedia/libdv/files/patch-libdv:mmx.h b/multimedia/libdv/files/patch-libdv:mmx.h new file mode 100644 index 0000000..7033e57 --- /dev/null +++ b/multimedia/libdv/files/patch-libdv:mmx.h @@ -0,0 +1,25 @@ +--- libdv/mmx.h.orig Thu Apr 26 16:08:25 2001 ++++ libdv/mmx.h Sun Feb 10 11:03:54 2002 +@@ -72,6 +72,9 @@ + __asm__ __volatile__ ( + /* See if CPUID instruction is supported ... */ + /* ... Get copies of EFLAGS into eax and ecx */ ++ "pushl %%ebx\n\t" ++ "pushl %%ecx\n\t" ++ "pushl %%edx\n\t" + "pushf\n\t" + "popl %%eax\n\t" + "movl %%eax, %%ecx\n\t" +@@ -207,9 +210,11 @@ + "movl $0, %0\n\n\t" + + "Return:\n\t" ++ "popl %%edx\n\t" ++ "popl %%ecx\n\t" ++ "popl %%ebx\n\t" + : "=a" (rval) + : /* no input */ +- : "ebx", "ecx", "edx" + ); + + /* Return */ |