From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Da8aP-0005V7-Fa for qemu-devel@nongnu.org; Mon, 23 May 2005 04:46:57 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Da8aN-0005UD-C2 for qemu-devel@nongnu.org; Mon, 23 May 2005 04:46:56 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Da8aG-0005D0-RJ for qemu-devel@nongnu.org; Mon, 23 May 2005 04:46:49 -0400 Received: from [192.76.135.70] (helo=kurt.tools.de) by monty-python.gnu.org with esmtp (TLS-1.0:DHE_RSA_3DES_EDE_CBC_SHA:24) (Exim 4.34) id 1Da8ba-0001Mm-Pk for qemu-devel@nongnu.org; Mon, 23 May 2005 04:48:11 -0400 Message-Id: <200505230838.j4N8cg3x017146@imap3.tools.intra> Date: Mon, 23 May 2005 10:38:42 +0200 (CEST) From: Juergen Keil Subject: Re: [Qemu-devel] Building qemu on UltraSparc MIME-Version: 1.0 Content-Type: MULTIPART/mixed; BOUNDARY=Rafter_of_Turkeys_170_000 Reply-To: Juergen Keil , qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org --Rafter_of_Turkeys_170_000 Content-Type: TEXT/plain; charset=ISO-8859-1 Content-Transfer-Encoding: QUOTED-PRINTABLE Content-MD5: LBlKkA31NEw7Nj5o+c6XdA== > Le dimanche 22 mai 2005 =E0 01:26 +0200, Herbert Poetzl a =E9crit : > > On Sat, May 21, 2005 at 07:32:11PM +0200, J=E9r=F4me Warnier wrote: > > > I'm trying to build qEmu v0.7.0 on Debian Sarge on a Sparc64 machine, > > > and it fails with strange errors. > > > Does anybody here have any idea to help me achieve it? > >=20 > > well, looks like you hit 32 vs 64 bit issues here, don't know > > the details about the sparc/64 support but I'd try to build > > as sparc32 first and see how far that gets ... > I tried that (starting with utility sparc32), and it even fails faster. > See the log attached. >=20 > > HTH, > > Herbert >=20 > > > I attach the log of the build to this mail. > > >=20 > > > Thanks >=20 > Thanks for your help. >=20 > [..] SPARC Host support is quite broken at this time, it seems. > In file included from=20 /home/jwarnier/debian/qemu-0.7.0/target-i386/op.c:724:/home/jwarnier/debian= /qemu-0.7.0/targe t-i386/ops_template.h: In function `op_jb_subb': > /home/jwarnier/debian/qemu-0.7.0/target-i386/ops_template.h:278: warning:= implicit=20 declaration of function `GOTO_LABEL_PARAM' Yep, the macro GOTO_LABEL_PARAM is not defined for the sparc platform. This needs to be fixed in dyngen-exec.h, with something like this: Index: dyngen-exec.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvsroot/qemu/qemu/dyngen-exec.h,v retrieving revision 1.25 diff -u -B -b -u -6 -r1.25 dyngen-exec.h --- dyngen-exec.h 24 Apr 2005 18:01:56 -0000 1.25 +++ dyngen-exec.h 23 May 2005 08:04:45 -0000 @@ -225,14 +246,14 @@ #ifdef __ia64__ #define EXIT_TB() asm volatile ("br.ret.sptk.many b0;;") #define GOTO_LABEL_PARAM(n) asm volatile ("br.sptk.many " \ ASM_NAME(__op_gen_label) #n) #endif #ifdef __sparc__ -#define EXIT_TB() asm volatile ("jmpl %i0 + 8, %g0\n" \ - "nop") +#define EXIT_TB() asm volatile ("jmpl %i0 + 8, %g0; nop") +#define GOTO_LABEL_PARAM(n) asm volatile ("ba " ASM_NAME(__op_gen_l= abel) #n ";nop") #endif #ifdef __arm__ #define EXIT_TB() asm volatile ("b exec_loop") #define GOTO_LABEL_PARAM(n) asm volatile ("b " ASM_NAME(__op_gen_label) #n= ) #endif #ifdef __mc68000 The new "ba" instruction also requires a new type of relocation support for R_SPARC_WDISP22 relocations in dyngen: Index: dyngen.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvsroot/qemu/qemu/dyngen.c,v retrieving revision 1.40 diff -u -B -b -u -6 -r1.40 dyngen.c --- dyngen.c 27 Apr 2005 19:55:58 -0000 1.40 +++ dyngen.c 23 May 2005 08:04:45 -0000 @@ -2142,12 +2142,24 @@ " & 0x3fffffff);\n", rel->r_offset - start_offset, rel->r_offset - start_offset, name, addend, rel->r_offset - start_offset); break; + case R_SPARC_WDISP22: + fprintf(outfile, + " *(uint32_t *)(gen_code_ptr + %d) = =3D " + "((*(uint32_t *)(gen_code_ptr + %d)) " + " & ~0x3fffff) " + " | ((((%s + %d) - (long)(gen_code_ptr = + %d))>>2) " + " & 0x3fffff);\n", + rel->r_offset - start_offset, + rel->r_offset - start_offset, + name, addend, + rel->r_offset - start_offset); + break; default: error("unsupported sparc relocation (%d)", typ= e); } } } } sparc64 probably needs a similar change to support WDISP22 relocations. > ../dyngen -o op.h op.o > dyngen: Found bogus save at the start of op_pavgb_mmx That's another issue with sparc host support. x86 MMX instruction support was added to qemu some time ago, and the compiler needs a *lot* of register variables for the MMX opcode code templates. Problem is that on sparc a lot of cpu registers are already in use as "global register" variables: most sparc global registers g1-g3, g6 and all local registers l0-l7. So the compiler starts to generate code that uses frame pointer relative temporary variables in memory, because it's running out of free cpu registers. The use of temporary variables in memory is incompatible with the way qemu's dyngen code generator works on sparc. That's basically what dyngen seems to be complaining about. I've fixed this for now for Solaris SPARC host support, by reducing the number of global cpu registers to just the global registers (g2-g6) - freeing the local registers l0-l7. With that change op_pavgb_mmx doesn't need temporary variables in the local stack frame any more. Index: dyngen-exec.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvsroot/qemu/qemu/dyngen-exec.h,v retrieving revision 1.25 diff -u -B -b -u -6 -r1.25 dyngen-exec.h --- dyngen-exec.h 24 Apr 2005 18:01:56 -0000 1.25 +++ dyngen-exec.h 23 May 2005 08:04:45 -0000 @@ -106,24 +119,32 @@ #define AREG0 "s3" #define AREG1 "s0" #define AREG2 "s1" #define AREG3 "s2" #endif #ifdef __sparc__ +#ifdef _SOLARIS +#define AREG0 "g2" +#define AREG1 "g3" +#define AREG2 "g4" +#define AREG3 "g5" +#define AREG4 "g6" +#else #define AREG0 "g6" #define AREG1 "g1" #define AREG2 "g2" #define AREG3 "g3" #define AREG4 "l0" #define AREG5 "l1" #define AREG6 "l2" #define AREG7 "l3" #define AREG8 "l4" #define AREG9 "l5" #define AREG10 "l6" #define AREG11 "l7" +#endif #define USE_FP_CONVERT #endif #ifdef __s390__ #define AREG0 "r10" #define AREG1 "r7" #define AREG2 "r8" Index: Makefile.target =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvsroot/qemu/qemu/Makefile.target,v retrieving revision 1.69 diff -u -B -b -u -6 -r1.69 Makefile.target --- Makefile.target 28 Apr 2005 21:15:08 -0000 1.69 +++ Makefile.target 23 May 2005 08:04:44 -0000 @@ -157,19 +157,25 @@ ifeq ($(ARCH),s390) OP_CFLAGS=3D$(CFLAGS) LDFLAGS+=3D-Wl,-T,$(SRC_PATH)/s390.ld endif ifeq ($(ARCH),sparc) +ifeq ($(CONFIG_SOLARIS),yes) +CFLAGS+=3D-m32 -ffixed-g2 -ffixed-g3 +LDFLAGS+=3D-m32 +OP_CFLAGS=3D$(CFLAGS) -fno-delayed-branch -fno-omit-frame-pointer -ffixed-= i0 +else CFLAGS+=3D-m32 -ffixed-g1 -ffixed-g2 -ffixed-g3 -ffixed-g6 LDFLAGS+=3D-m32 OP_CFLAGS=3D$(CFLAGS) -fno-delayed-branch -ffixed-i0 HELPER_CFLAGS=3D$(CFLAGS) -ffixed-i0 -mflat # -static is used to avoid g1/g3 usage by the dynamic linker LDFLAGS+=3D-Wl,-T,$(SRC_PATH)/sparc.ld -static endif +endif ifeq ($(ARCH),sparc64) CFLAGS+=3D-m64 -ffixed-g1 -ffixed-g2 -ffixed-g3 -ffixed-g6 LDFLAGS+=3D-m64 OP_CFLAGS=3D$(CFLAGS) -fno-delayed-branch -ffixed-i0 endif All of the above changes are part of bigger Solaris x86 / Solaris SPARC / FreeBSD / NetBSD patch that I'll attach below. This patch won't immediately fix the issues that you've got on linux/sparc, but it should give you some ideas where to start fixing the build issues. -- Juergen Keil =09=09jk@tools.de Tools GmbH=09=09=09+49 (228) 9858011 --Rafter_of_Turkeys_170_000 Content-Type: APPLICATION/octet-stream; name="qemu-solaris-freebsd-netbsd-patch.gz"; x-unix-mode=0644 Content-Transfer-Encoding: BASE64 Content-Description: qemu-solaris-freebsd-netbsd-patch.gz Content-MD5: Gf1RivLshhp5GppODoo0LQ== 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 PwJYrDq8wQ2jPWfAA0Z1D2jug/MtVl9+u8XOSMW+SCyn+7ge81vYahiwzCTx NDCOK2Fj4felFdXcIIxzZ/Y4oEvOhUKVogALIJNC2UVKElSDEJwVoD8SjABd 7lMWijR2Ozocvb3l1rP4sOOl5ZyKqMsm8aiurWhYzWnRW0rkfO2XXwJK3ivl DCdBFxRpsf0/srYps3nPlvCO1Mey1AyuccskH8eIEjNHPhJg4WcomcWZk8UW ezvQZZ5V+NXgV9npQ/zUM+LBWoIoRgvtM4Y6H4Eacu3wy45/isjQOH/meCqd KnJf5WlFuPzQHTKiKAmVAiNHHAVW1ZDNQG7IYJtpYGm4GJ0G9zJsgYMXtALz OCs/1Z4JmIa4oh5QeaJG+Eeg8HJQLCGsBYFqlrX0H51gyb25iQWY+AGK4Kw8 XkUgCfiPFXaNMNfH1O9yhZW5gvkBZE2kQng1mCdqcZZ/6q8wdSlpfflg8oKn ylryev//RF7vvw55vS8mr/dfTF43MqsmOZaYtSbPt4TmAaoZCxXq/i9Ezgi7 FoGXR3v/LUhj4nosx3Fm2s1T8bMZSNqaYvEFjpQxPrV35qHnBwvbLT/h9pkt J64dhnjp0usDdnptXf5jeHOV8CmZh3eBAxwE7kFGm/O7FSCATQltUhG+F9Vn 5eQmjWs6f6ywOapeXPsgU911sGMbWv0xt9qLmvwx22QSEqqmKmbkZ405FEhS daDrMOK2hw3CsuDf88fpPyNcSfDI+Yu7YBPFLczscagfDVgiDhyFO/YYFWQC P0kxLssFJacHndZACZKn51eHo3c9I4Yko1cSHFiDZMA0D3Ukj912Q6qEPinQ lRZcvbdT/4o/r9ifytGdnQ2P986GwyFvGQ6AOncFl1wMhig6IEV91R6IiMWv T2I/l8Y63moh+bgEr2x5jo12ScvB60CIAt5c1rjrUBJs6j96SqkIYEPr5iIH bLVM6B452HUOWORb/+sEfhLsH0KZtqbNa2qzuqnNa2qzuqnNa2yT7KhFPPgL h8yoZUFSXTdzQFLdbtRyWaZvziv9VSYpjztCV4xmgi3q7bcb+43+OrZoMz+E aWdAwMFf/aSjrUrIeToiWkWsEl6z6zzZaNePeSOZsZk4I8EdxORNKzEbPcWR oFjGOa8Mmrq+gYVneyrQQcU/pDZ3jly0AcFfl6JQ0Yj6xB+Y704ZXdWELkYO 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 --Rafter_of_Turkeys_170_000--