diff --git a/libavcodec/Makefile b/libavcodec/Makefile index c345a650af..d2be0e760c 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -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 diff --git a/libavcodec/i386/cputest.c b/libavcodec/i386/cputest.c index 4847bac15d..e8f22dde41 100644 --- a/libavcodec/i386/cputest.c +++ b/libavcodec/i386/cputest.c @@ -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