qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Blue Swirl <blauwirbel@gmail.com>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] [4457] Fix compilation on Sparc host, implement ld and st
Date: Wed, 14 May 2008 19:22:13 +0000	[thread overview]
Message-ID: <E1JwMYH-0000ES-3f@cvs.savannah.gnu.org> (raw)

Revision: 4457
          http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=4457
Author:   blueswir1
Date:     2008-05-14 19:22:05 +0000 (Wed, 14 May 2008)

Log Message:
-----------
Fix compilation on Sparc host, implement ld and st

Modified Paths:
--------------
    trunk/cpu-exec.c
    trunk/tcg/sparc/tcg-target.c
    trunk/tcg/sparc/tcg-target.h

Modified: trunk/cpu-exec.c
===================================================================
--- trunk/cpu-exec.c	2008-05-13 23:51:49 UTC (rev 4456)
+++ trunk/cpu-exec.c	2008-05-14 19:22:05 UTC (rev 4457)
@@ -53,19 +53,14 @@
 // Work around ugly bugs in glibc that mangle global register contents
 
 static volatile void *saved_env;
-static volatile unsigned long saved_t0, saved_i7;
 #undef SAVE_GLOBALS
 #define SAVE_GLOBALS() do {                                     \
         saved_env = env;                                        \
-        saved_t0 = T0;                                          \
-        asm volatile ("st %%i7, [%0]" : : "r" (&saved_i7));     \
     } while(0)
 
 #undef RESTORE_GLOBALS
 #define RESTORE_GLOBALS() do {                                  \
         env = (void *)saved_env;                                \
-        T0 = saved_t0;                                          \
-        asm volatile ("ld [%0], %%i7" : : "r" (&saved_i7));     \
     } while(0)
 
 static int sparc_setjmp(jmp_buf buf)

Modified: trunk/tcg/sparc/tcg-target.c
===================================================================
--- trunk/tcg/sparc/tcg-target.c	2008-05-13 23:51:49 UTC (rev 4456)
+++ trunk/tcg/sparc/tcg-target.c	2008-05-14 19:22:05 UTC (rev 4457)
@@ -266,13 +266,19 @@
 static inline void tcg_out_ld(TCGContext *s, TCGType type, int ret,
                               int arg1, tcg_target_long arg2)
 {
-    fprintf(stderr, "unimplemented %s\n", __func__);
+    if (type == TCG_TYPE_I32)
+        tcg_out_ldst(s, ret, arg1, arg2, LDUW);
+    else
+        tcg_out_ldst(s, ret, arg1, arg2, LDX);
 }
 
 static inline void tcg_out_st(TCGContext *s, TCGType type, int arg,
                               int arg1, tcg_target_long arg2)
 {
-    fprintf(stderr, "unimplemented %s\n", __func__);
+    if (type == TCG_TYPE_I32)
+        tcg_out_ldst(s, arg, arg1, arg2, STW);
+    else
+        tcg_out_ldst(s, arg, arg1, arg2, STX);
 }
 
 static inline void tcg_out_arith(TCGContext *s, int rd, int rs1, int rs2,
@@ -312,10 +318,14 @@
     tcg_out32(s, SETHI | INSN_RD(TCG_REG_G0) | 0);
 }
 
-static inline void tcg_target_prologue(TCGContext *s)
+/* Generate global QEMU prologue and epilogue code */
+void tcg_target_qemu_prologue(TCGContext *s)
 {
     tcg_out32(s, SAVE | INSN_RD(TCG_REG_O6) | INSN_RS1(TCG_REG_O6) |
               INSN_IMM13(-TCG_TARGET_STACK_MINFRAME));
+    tcg_out32(s, JMPL | INSN_RD(TCG_REG_G0) | INSN_RS1(TCG_REG_O0) |
+              INSN_RS2(TCG_REG_G0));
+    tcg_out_nop(s);
 }
 
 static inline void tcg_out_op(TCGContext *s, int opc, const TCGArg *args,

Modified: trunk/tcg/sparc/tcg-target.h
===================================================================
--- trunk/tcg/sparc/tcg-target.h	2008-05-13 23:51:49 UTC (rev 4456)
+++ trunk/tcg/sparc/tcg-target.h	2008-05-14 19:22:05 UTC (rev 4457)
@@ -84,8 +84,9 @@
 /* optional instructions */
 //#define TCG_TARGET_HAS_bswap_i32
 //#define TCG_TARGET_HAS_bswap_i64
+//#define TCG_TARGET_HAS_neg_i32
+//#define TCG_TARGET_HAS_neg_i64
 
-#define TCG_TARGET_NEEDS_PROLOGUE 1
 
 /* Note: must be synced with dyngen-exec.h */
 #ifdef HOST_SOLARIS

                 reply	other threads:[~2008-05-14 19:22 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=E1JwMYH-0000ES-3f@cvs.savannah.gnu.org \
    --to=blauwirbel@gmail.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).