[MPlayer-users] Error in 64-bit compile - using 16-bit assembly instructions
Jason Awuku
j.awuku at googlemail.com
Sun Oct 29 06:02:53 CET 2006
I'm trying to compile the latest mplayer svn on Ubuntu Edgy 64-bit.
The compilation gets stuck at a c-file called osd.c:
Console Output:
gcc-4.1 -c -I. -I.. -I../osdep -I../libavutil
-Wdeclaration-after-statement -mtune=k8 -D_REENTRANT
-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE
-I/usr/include/directfb -I/usr/include -I/usr/include/
-I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT
-I/usr/include/kde/artsc -pthread -I/usr/include/glib-2.0
-I/usr/lib/glib-2.0/include -I/usr/include -I/usr/include/dvdnav
-I/usr/include/freetype2 -I/usr/include
-I/usr/local/lib/live/liveMedia/include
-I/usr/local/lib/live/UsageEnvironment/include
-I/usr/local/lib/live/BasicUsageEnvironment/include
-I/usr/local/lib/live/groupsock/include -DMPG12PLAY -o osd.o osd.c
/tmp/ccVlxCnc.s: Assembler messages:
/tmp/ccVlxCnc.s:2420: Error: can't encode register '%ch' in an
instruction requiring REX prefix.
/tmp/ccVlxCnc.s:2421: Error: can't encode register '%ah' in an
instruction requiring REX prefix.
/tmp/ccVlxCnc.s:2422: Error: can't encode register '%dh' in an
instruction requiring REX prefix.
make[2]: *** [osd.o] Error 1
I traced this back to the file libvo/osd_template.c
In this file, is the offending article at lines 417-445
#else /* HAVE_MMX */
for(x=0;x<w;x++){
if(srca[x]){
asm volatile(
"movzbl (%0), %%ecx\n\t"
"movzbl 1(%0), %%eax\n\t"
"movzbl 2(%0), %%edx\n\t"
"imull %1, %%ecx\n\t"
"imull %1, %%eax\n\t"
"imull %1, %%edx\n\t"
"addl %2, %%ecx\n\t"
"addl %2, %%eax\n\t"
"addl %2, %%edx\n\t"
"movb %%ch, (%0)\n\t"
"movb %%ah, 1(%0)\n\t"
"movb %%dh, 2(%0)\n\t"
:
:"r" (&dstbase[4*x]),
"r" ((unsigned)srca[x]),
"r" (((unsigned)src[x])<<8)
:"%eax", "%ecx", "%edx"
);
}
}
#endif /* HAVE_MMX */
%ch, %dh and %ah registers are not used in x86_64.
Should I just comment out this section, or has somebody come up with a
patch already?
Thanks
More information about the MPlayer-users
mailing list