qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Re: [Qemu-devel] [PATCH] qemu-0.7.0 Solaris Host patch (Real)


From: Ben Taylor
Subject: Re: Re: [Qemu-devel] [PATCH] qemu-0.7.0 Solaris Host patch (Real)
Date: Fri, 6 May 2005 16:21:49 -0400

Juergen Keil <address@hidden>
> 
> > 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 have retested on sparc (sol9), by adding some of the
defines in fenv.h for Solaris 10 to the gnu-c99-math.h 
file you created, and the patches you posted, and now 
I'm getting an error when I  compile that looks like this:

for d in i386-softmmu ppc-softmmu sparc-softmmu x86_64-softmmu; do \
gmake -C $d all || exit 1 ; \
        done
gmake[1]: Entering directory 
`/export/src/qemu-snapshot-2005-05-04_23-sol/i386-softmmu'
../dyngen -c -o opc.h op.o
dyngen: ret; restore; not found at end of op_fstt_ST0_A0
gmake[1]: *** [opc.h] Error 1
gmake[1]: Leaving directory 
`/export/src/qemu-snapshot-2005-05-04_23-sol/i386-softmmu'
gmake: *** [all] Error 1

Ideas?

> > 
> > 
> > 
> > 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
> address@hidden
> http://lists.nongnu.org/mailman/listinfo/qemu-devel
> 





reply via email to

[Prev in Thread] Current Thread [Next in Thread]