QEMU on FreeBSD/amd64 (patches)
Jung-uk Kim
jkim at niksun.com
Fri Apr 15 14:14:01 PDT 2005
On Friday 15 April 2005 03:51 pm, Juergen Lock wrote:
> On Wed, Apr 13, 2005 at 04:35:26PM -0400, Jung-uk Kim wrote:
> > I finally manage to build QEMU snapshot on FreeBSD/amd64
> > 6-CURRENT.
>
> Nice!
>
> > There's ports/emulators/qemu but it doesn't build on AMD64 for
> > several reasons, i. e., QEMU and FreeBSD are both fast moving
> > targets (esp. src/lib/msun), some long double math functions
> > don't exist on FreeBSD,
>
> So the replacements in files/patch-aa in the port didnt work for
> amd64? (the ones #if defined(_BSD) && defined(USE_X86LDOUBLE))
Correct.
> > GCC in base system doesn't build QEMU because of several
> > optimization bugs specific to AMD64, etc.
> >
> > 1. Install GCC 3.4 from ports.
> >
> > Anything newer than 20050316 should work. (Theoretically you can
> > use gcc40 newer than 20041127 but not verified. Actually I am
> > using patched version of src/contrib/gcc. ;-)
> >
> > 2. Install following dependencies from ports:
> >
> > devel/gmake (of course)
> > net/samba
> > devel/sdl12
> >
> > I believe samba is optional but sdl12 is not. It doesn't work
> > without SDL because `-nographic' option is broken. I believe it
> > is an upstream bug (related to FreeBSD's pty or termios, i. e.,
> > fail to get correct term size and segfault) but I couldn't
> > pin-point the culprit yet. In fact, I didn't bother too much
> > because SDL worked just fine. ;-)
>
> Samba is needed for the -smb <dir> option (export a local dir to
> guest), if you don't use that you can omit samba thats true.
Understood.
> >[...]
> > Note 2: qemu-libmath-amd64.diff contains C99 long double math
> > functions taken from glibc-2.3.5 and modified for FreeBSD/amd64:
> >
> > http://ftp.gnu.org/gnu/glibc/
> > http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/?cvsroot=glibc
> >
> > rintl() sysdeps/i386/fpu/s_rintl.c
> > atan2l() sysdeps/i386/fpu/e_atan2l.c
> > sqrtl() sysdeps/i386/fpu/e_sqrtl.c
> > llrintl() sysdeps/x86_64/fpu/s_llrintl.S
> > lrintl() sysdeps/x86_64/fpu/s_llrintl.S
> > sinl() sysdeps/x86_64/fpu/s_sinl.S
> > cosl() sysdeps/x86_64/fpu/s_cosl.S
> > tanl() sysdeps/x86_64/fpu/s_tanl.S
> > logl() sysdeps/x86_64/fpu/e_logl.S
> > powl() sysdeps/x86_64/fpu/e_powl.S
> > remainderl() sysdeps/x86_64/fpu/e_remainderl.S
> >
> > Just enough to compile QEMU snapshot until we complete C99
> > project. ;-) Similarly you can add other architectures under
> > bsd/${MACHINE_ARCH}.
>
> So we need different versions of these for i386 hosts?
Yes.
> And how about 4.x i386 hosts?
We need to add more #if's, of course. ;-)
> Obviously the port should still run on those too.
I know. I just wanted to tell people that it's possible. I will post
a patch for those two cases when I find some free time.
Thanks,
Jung-uk Kim
> Juergen
More information about the freebsd-amd64
mailing list