mplayer, amd64, and CPU flags [patch]
Pav Lucistnik
pav at oook.cz
Sat May 21 10:44:24 PDT 2005
Axel Gonzalez píše v so 21. 05. 2005 v 12:37 -0500:
> Maybe this is a little unnecesary since its amd64 and should support all extra
> flags (at the end its a patch to the makefile), and the only file broken is
> to get the configure arguments, cpu detection inside the mplayer binary works
> perfectly
>
> on TOOLS/cpuinfo.c:
>
> static cpuid_regs_t
> cpuid(int func) {
> cpuid_regs_t regs;
> #define CPUID ".byte 0x0f, 0xa2; "
> asm("push %%ebx; "
> "movl %4,%%eax; " CPUID
> "movl %%eax,%0; movl %%ebx,%1; movl %%ecx,%2; movl %%edx,%3; "
> "pop %%ebx"
> : "=m" (regs.eax), "=m" (regs.ebx), "=m" (regs.ecx),
> "=m" (regs.edx)
> : "g" (func)
> : "%eax", "%ecx", "%edx");
>
> printf(""); // **** NOTE this *extra* printf()
> return regs;
> }
>
>
> with the printf:
>
> # TOOLS/cpuinfo
> vendor_id : AuthenticAMD
> cpu family : 15
> model : 12
> stepping : 0
> flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca
> cmov pat pse36 cflsh mmx fxsr sse sse2 mmxext 3dnowext 3dnow k6_mtrr
> cpu MHz : 2000.021
> model name : AMD Athlon(tm) 64 Processor 3000+
>
> w/o the printf()
>
> # TOOLS/cpuinfo
> vendor_id :
> model name : Unknown CPU
>
>
> why this works, i have no idea. Maybe its something to do with the registers,
> etc.
It don't work with any optimization level in gcc, ie.
gcc -o cpuinfo cpuinfo.c
works, but
gcc -O -o cpuinfo cpuinfo.c
prints garbage.
> I won't try to debug it further since we already know the flags of the CPU
> (and the printf seems to fix the problem anyways)
>
>
> this is a commitable patch to the makefile:
>
> --- Makefile.orig Sat May 21 10:58:38 2005
> +++ Makefile Sat May 21 11:01:44 2005
> @@ -353,6 +353,15 @@
> PLIST_SUB+= VIDIX="@comment "
> .endif
>
> +.if ${ARCH} == "amd64"
> +CONFIGURE_ARGS+= --enable-mmx \
> + --enable-mmx2 \
> + --enable-3dnow \
> + --enable-3dnowex \
> + --enable-sse \
> + --enable-sse2
> +.endif
> +
> #.if exists(${LOCALBASE}/modules/rtc.ko)
> #WITH_RTC= yes
> #.endif
I'll mail maintainer what he thinks about this Makefile patch. (I'd
rather put inside WITHOUT_RUNTIME_CPUDETECTION section first.)
--
Pav Lucistnik <pav at oook.cz>
<pav at FreeBSD.org>
Legolas: Nazgulove museli otravit muj lembas...
More information about the freebsd-amd64
mailing list