[Scummvm-cvs-logs] CVS: scummvm/sound/softsynth/mt32 i386.cpp,1.3,1.3.2.1

Eugene Sandulenko sev at users.sourceforge.net
Mon Oct 17 21:29:29 CEST 2005


Update of /cvsroot/scummvm/scummvm/sound/softsynth/mt32
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24844/sound/softsynth/mt32

Modified Files:
      Tag: branch-0-8-0
	i386.cpp 
Log Message:
Backport fix for bug #1221549 "MT32emu: doesn't compile under gcc 3.4.2 / i386"


Index: i386.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sound/softsynth/mt32/i386.cpp,v
retrieving revision 1.3
retrieving revision 1.3.2.1
diff -u -d -r1.3 -r1.3.2.1
--- i386.cpp	19 Jul 2005 17:30:49 -0000	1.3
+++ i386.cpp	18 Oct 2005 04:28:58 -0000	1.3.2.1
@@ -55,10 +55,12 @@
 
 	/* check cpuid */
 	__asm__ __volatile__(
+		"pushl  %%ebx            \n" \
 		"movl   $1, %%eax        \n" \
 		"cpuid                   \n" \
 		"movl   %%edx, %0        \n" \
-		: "=r"(result) : : "eax", "ebx", "ecx", "edx");
+		"popl   %%ebx            \n" \
+		: "=r"(result) : : "eax", "ecx", "edx");
 
 	if (result & (1 << 25))
 		return true;
@@ -74,10 +76,12 @@
 
 	// get cpuid
 	__asm__ __volatile__(
+		"pushl  %%ebx            \n" \
 		"movl   $0x80000001, %%eax \n" \
 		"cpuid                     \n" \
 		"movl   %%edx, %0          \n" \
-		: "=r"(result) : : "eax", "ebx", "ecx", "edx");
+		"popl   %%ebx            \n" \
+		: "=r"(result) : : "eax", "ecx", "edx");
 
 	if (result & 0x80000000)
 		return true;
@@ -154,8 +158,8 @@
 	__asm__ __volatile__ (
 		"movq %0, %%mm1       \n" \
 		"                     \n" \
-		"movl  %1, %%ebx      \n" \
-		"movq 0(%%ebx), %%mm2 \n" \
+		"movl  %1, %%edi      \n" \
+		"movq 0(%%edi), %%mm2 \n" \
 		"                     \n" \
 		"movl %2, %%eax;      \n" \
 		"movq 0(%%eax), %%mm3 \n" \
@@ -168,8 +172,8 @@
 		"                     \n" \
 		"movd %%mm1, %3       \n" \
 		"                     \n" \
-		"addl  $8, %%ebx      \n" \
-		"movq 0(%%ebx), %%mm2 \n" \
+		"addl  $8, %%edi      \n" \
+		"movq 0(%%edi), %%mm2 \n" \
 		"movq 0(%%eax), %%mm3 \n" \
 		"                     \n" \
 		"pfmul %%mm3, %%mm2   \n" \
@@ -183,10 +187,10 @@
 		"                     \n" \
 		"movd %%mm3, 4(%%eax) \n" \
 		"                     \n" \
-		"addl $8, %%ebx       \n" \
+		"addl $8, %%edi       \n" \
 		"addl $8, %%eax       \n" \
 		"                     \n" \
-		"movq 0(%%ebx), %%mm2 \n" \
+		"movq 0(%%edi), %%mm2 \n" \
 		"movq 0(%%eax), %%mm3 \n" \
 		"                     \n" \
 		"pfmul %%mm3, %%mm2   \n" \
@@ -197,8 +201,8 @@
 		"                     \n" \
 		"movd %%mm1, %3       \n" \
 		"                     \n" \
-		"addl $8, %%ebx       \n" \
-		"movq 0(%%ebx), %%mm2 \n" \
+		"addl $8, %%edi       \n" \
+		"movq 0(%%edi), %%mm2 \n" \
 		"movq 0(%%eax), %%mm3 \n" \
 		"                     \n" \
 		"pfmul %%mm3, %%mm2   \n" \
@@ -214,7 +218,7 @@
 		"movd %%mm1, %0       \n" \
 		"femms                \n" \
 		: "=m"(output) : "g"(coef_ptr), "g"(hist1_ptr), "m"(tmp)
-		: "eax", "ebx", "memory"
+		: "eax", "edi", "memory"
 #ifdef __MMX__
 		, "mm1", "mm2", "mm3"
 #endif
@@ -383,6 +387,7 @@
 		"por  %%mm2, %%mm1    \n" \
 		"movl %3, %%edi       \n" \
 		"movl %4, %%esi       \n" \
+	    "pushl %%ebx          \n" \
 		"1:                   \n" \
 		"movw 0(%%esi), %%bx  \n" \
 		"addl $2, %%esi       \n" \
@@ -408,8 +413,9 @@
 		"cmpl $0, %%ecx       \n" \
 		"jg 1b                \n" \
 		"emms                 \n"  \
+	    "popl %%ebx           \n" \
 		: : "g"(quadlen), "g"(leftvol), "g"(rightvol), "g"(partialBuf), "g"(p1buf)
-		: "eax", "ebx", "ecx", "edx", "edi", "esi", "memory"
+		: "eax", "ecx", "edx", "edi", "esi", "memory"
 #ifdef __MMX__
 		, "mm1", "mm2", "mm3"
 #endif





More information about the Scummvm-git-logs mailing list