gst/gstcpu.c: Add workaround for gcc-3.2 generating bad code around the cpu detection asm code.

Original commit message from CVS:
* gst/gstcpu.c: (gst_cpuid_i386): Add workaround for gcc-3.2
generating bad code around the cpu detection asm code.
This commit is contained in:
David Schleef 2004-04-15 03:20:23 +00:00
parent 923b573acb
commit 0622e9e391
2 changed files with 9 additions and 1 deletions

View file

@ -1,3 +1,8 @@
2004-04-14 David Schleef <ds@schleef.org>
* gst/gstcpu.c: (gst_cpuid_i386): Add workaround for gcc-3.2
generating bad code around the cpu detection asm code.
2004-04-14 Thomas Vander Stichele <thomas at apestaart dot org>
* tools/gst-inspect.c: (print_element_info):

View file

@ -69,7 +69,10 @@ gst_cpuid_i386 (int x, unsigned long *eax, unsigned long *ebx,
{
unsigned long regs[4];
asm (" cpuid\n" " movl %%eax, %0\n" " movl %%ebx, %1\n" " movl %%ecx, %2\n" " movl %%edx, %3\n":"=o" (regs[0]),
asm (
/* GCC-3.2 (and possibly others) don't clobber ebx properly,
* so we save/restore it directly. */
" pushl %%ebx\n" " cpuid\n" " movl %%eax, %0\n" " movl %%ebx, %1\n" " movl %%ecx, %2\n" " movl %%edx, %3\n" " popl %%ebx\n":"=o" (regs[0]),
"=o" (regs[1]),
"=o" (regs[2]), "=o" (regs[3])
: "a" (x)