Portability and testing issues
authorNick Kurshev <nickols_k@mail.ru>
Wed, 8 Aug 2001 16:26:51 +0000 (16:26 +0000)
committerNick Kurshev <nickols_k@mail.ru>
Wed, 8 Aug 2001 16:26:51 +0000 (16:26 +0000)
Originally committed as revision 55 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/Makefile
libavcodec/i386/cputest.c

index c345a65..d2be0e7 100644 (file)
@@ -37,7 +37,7 @@ LIB= libavcodec.a
 TESTS= imgresample-test dct-test
 
 all: $(LIB)
-tests: apiexample $(TESTS)
+tests: apiexample cpuid_test $(TESTS)
 
 $(LIB): $(OBJS) $(ASM_OBJS)
        rm -f $@
@@ -70,6 +70,10 @@ distclean: clean
 apiexample: apiexample.c $(LIB)
        $(CC) $(CFLAGS) -o $@ $< $(LIB) -lm
 
+# cpuid test
+cpuid_test: i386/cputest.c
+       $(CC) $(CFLAGS) -D__TEST__ -o $@ $<
+
 # testing progs
 
 imgresample-test: imgresample.c
index 4847bac..e8f22dd 100644 (file)
@@ -6,13 +6,13 @@
 
 /* ebx saving is necessary for PIC. gcc seems unable to see it alone */
 #define cpuid(index,eax,ebx,ecx,edx)\
-    asm ("movl %%ebx, %%esi\n\t"\
+    __asm __volatile\
+       ("movl %%ebx, %%esi\n\t"\
          "cpuid\n\t"\
          "xchgl %%ebx, %%esi"\
          : "=a" (eax), "=S" (ebx),\
            "=c" (ecx), "=d" (edx)\
-         : "0" (index)\
-         : "cc")\
+         : "0" (index));
 
 /* Function to test if multimedia instructions are supported...  */
 int mm_support(void)
@@ -102,3 +102,13 @@ int mm_support(void)
         return 0;
     }
 }
+
+#ifdef __TEST__
+int main ( void )
+{
+  int mm_flags;
+  mm_flags = mm_support();
+  printf("mm_support = 0x%08u\n",mm_flags);
+  return 0;
+}
+#endif