> gcc-3.4.2 -Wall -O2 -g -fno-strict-aliasing -m32 -ffixed-g1 -ffixed-g2 > - -ffixed-g3 -ffixed-g6 -fno-delayed-branch -ffixed-i0 -fno-reorder-blocks > - -fno-optimize-sibling-calls -I. -I/home/nardmann/qemu-0.7.0/target-i386 > - -I/home/nardmann/qemu-0.7.0 -I/opt/SUNWspro/prod/include/cc -D_GNU_SOURCE > - -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -I/home/nardmann/qemu-0.7.0/fpu > - -I/home/nardmann/qemu-0.7.0/slirp -c -o > op.o /home/nardmann/qemu-0.7.0/target-i386/op.c > In file included from /home/nardmann/qemu-0.7.0/fpu/softfloat-native.h:7, > from /home/nardmann/qemu-0.7.0/fpu/softfloat.h:394, > from /home/nardmann/qemu-0.7.0/target-i386/cpu.h:41, > from /home/nardmann/qemu-0.7.0/target-i386/exec.h:143, > from /home/nardmann/qemu-0.7.0/target-i386/op.c:22: > /opt/SUNWspro/prod/include/cc/fenv.h:8: warning: ignoring #pragma ident > In file included from /home/nardmann/qemu-0.7.0/fpu/softfloat.h:394, > from /home/nardmann/qemu-0.7.0/target-i386/cpu.h:41, > from /home/nardmann/qemu-0.7.0/target-i386/exec.h:143, > from /home/nardmann/qemu-0.7.0/target-i386/op.c:22: > /home/nardmann/qemu-0.7.0/fpu/softfloat-native.h: In function `float32_abs': > /home/nardmann/qemu-0.7.0/fpu/softfloat-native.h:164: warning: implicit > declaration of function `fabsf' > In file included from /home/nardmann/qemu-0.7.0/target-i386/op.c:724: > /home/nardmann/qemu-0.7.0/target-i386/ops_template.h: In function > `op_jb_subb': > /home/nardmann/qemu-0.7.0/target-i386/ops_template.h:278: warning: implicit > declaration of function `GOTO_LABEL_PARAM' > ../dyngen -o op.h op.o > dyngen: Found bogus save at the start of op_pavgw_xmm > > > > I found that GOTO_LABEL_PARAM ist not defined for sparc in dyngen-exec.h; any > reason for this?
I've fixed the 'bogus save' issue (and another sparc problem with incorrect C syntax generated by dyngen) with this patch: Index: dyngen.c =================================================================== RCS file: /cvsroot/qemu/qemu/dyngen.c,v retrieving revision 1.40 diff -u -B -r1.40 dyngen.c --- dyngen.c 27 Apr 2005 19:55:58 -0000 1.40 +++ dyngen.c 2 May 2005 18:29:08 -0000 @@ -1196,7 +1196,7 @@ } else { #ifdef HOST_SPARC if (sym_name[0] == '.') - snprintf(name, sizeof(name), + snprintf(name, name_size, "(long)(&__dot_%s)", sym_name + 1); else @@ -1451,7 +1451,9 @@ if ((start_insn & ~0x1fff) == 0x9de3a000) { p_start += 0x4; start_offset += 0x4; - if ((int)(start_insn | ~0x1fff) < -128) + // if ((int)(start_insn | ~0x1fff) < -128) + // Why -128? op_pavgb_xmm adjusts the stack by -0x110 == -272 + if ((int)(start_insn | ~0x1fff) < -272) error("Found bogus save at the start of %s", name); if (end_insn1 != 0x81c7e008 || end_insn2 != 0x81e80000) error("ret; restore; not found at end of %s", name); The missing GOTO_LABEL_PARAM macro needs a patch like this: Index: dyngen-exec.h =================================================================== RCS file: /cvsroot/qemu/qemu/dyngen-exec.h,v retrieving revision 1.25 diff -u -B -r1.25 dyngen-exec.h --- dyngen-exec.h 24 Apr 2005 18:01:56 -0000 1.25 +++ dyngen-exec.h 2 May 2005 18:29:07 -0000 @@ -230,6 +237,8 @@ #ifdef __sparc__ #define EXIT_TB() asm volatile ("jmpl %i0 + 8, %g0\n" \ "nop") +#define GOTO_LABEL_PARAM(n) asm volatile ( \ + "set " ASM_NAME(__op_gen_label) #n ", %g1; jmp %g1; nop") #endif #ifdef __arm__ #define EXIT_TB() asm volatile ("b exec_loop") _______________________________________________ Qemu-devel mailing list Qemu-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/qemu-devel