qemu-devel
[Top][All Lists]
Advanced

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

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


From: Juergen Keil
Subject: Re: [Qemu-devel] [PATCH] qemu-0.7.0 Solaris Host patch (Real)
Date: Mon, 2 May 2005 20:35:19 +0200 (CEST)


> 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")





reply via email to

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