qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Michael Matz <matz@suse.de>
To: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Cc: consul@collegeclub.com, qemu-devel@nongnu.org,
	Alexander Graf <agraf@suse.de>
Subject: Re: [Qemu-devel] Re: [PATCH 1/5] Fix i386 Host
Date: Fri, 18 Jan 2008 14:12:34 +0100 (CET)	[thread overview]
Message-ID: <Pine.LNX.4.64.0801181352380.20583@wotan.suse.de> (raw)
In-Reply-To: <alpine.LSU.1.00.0801181243130.5731@racer.site>

Hi,

On Fri, 18 Jan 2008, Johannes Schindelin wrote:

> > > >+#if DATA_SIZE == 1 || DATA_SIZE == 2
> > > >+                  "q" (v),
> > > >+#else
> > > >                  "r" (v),
> > > >+#endif
> > > >                  "i" ((CPU_TLB_SIZE - 1) << CPU_TLB_ENTRY_BITS),
> > > >                  "i" (TARGET_PAGE_BITS - CPU_TLB_ENTRY_BITS),
> > > >                  "i" (TARGET_PAGE_MASK | (DATA_SIZE - 1)),
> > > >-- snap --
> > > >
> > > >Michael, Alexander, what is this hunk supposed to do?
> > 
> > This is required to generate valid assembler code.  Without that hunk, the 
> > interesting parts of the asm look like so (for DATA_SIZE == 1):
> > 
> > asm (" ... movzbl %b1, %%edx\n ... " : : "r" (blubb), "r" (bla) );
> 
> Okay, but this only concerns gcc4, apparently.

No, it's nothing to do with GCC.  The instruction itself (movzbl) requires 
an 8-bit register, so it must be made sure by the constraints the that 
operand indeed is one of those four.  If it also works with "r" then this 
is just pure luck (in that GCC chooses one of the four good registes, and 
not one of the three bad ones allowable with "r").

> Can't we guard it with yet another "defined(GCC...)"?

Only if you want to trust your luck.  I fear I don't have gcc 3.4.2 lying 
around anywhere, so I can't really help debugging this reload breakage in 
that GCC version.  It might help to introduce a temporary to guide GCC 
through this problematic reload case by detaching the global register 
variable from the asm operand.  For cases where it's no problem this 
should be optimized away, so doesn't inhibit a performance cost.  What I 
mean is something like the below.  If someone with gcc 3.4.2 could test 
that ...


Ciao,
Michael.
-- 
--- softmmu_header.h.mm	2008-01-18 14:15:46.000000000 +0100
+++ softmmu_header.h	2008-01-18 14:14:49.000000000 +0100
@@ -212,6 +212,9 @@ static inline int glue(glue(lds, SUFFIX)
 
 static inline void glue(glue(st, SUFFIX), MEMSUFFIX)(target_ulong ptr, RES_TYPE v)
 {
+#if DATA_SIZE == 1 || DATA_SIZE == 2
+    RES_TYPE vtmp = v;
+#endif
     asm volatile ("movl %0, %%edx\n"
                   "movl %0, %%eax\n"
                   "shrl %3, %%edx\n"
@@ -253,7 +256,7 @@ static inline void glue(glue(st, SUFFIX)
 /* NOTE: 'q' would be needed as constraint, but we could not use it
    with T1 ! */
 #if DATA_SIZE == 1 || DATA_SIZE == 2
-		  "q" (v),
+		  "q" (vtmp),
 #else
                   "r" (v), 
 #endif

  reply	other threads:[~2008-01-18 13:12 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-01-17  6:42 [Qemu-devel] [PATCH 1/5] Fix i386 Host Alexander Graf
2008-01-17  8:10 ` Alexander Graf
2008-01-17 12:21   ` Jens Arm
2008-01-17  9:42     ` Alexander Graf
2008-01-17 14:26       ` Alexander Graf
2008-01-17 14:42         ` Johannes Schindelin
2008-01-17 14:47           ` Johannes Schindelin
2008-01-17 15:08             ` Alexander Graf
2008-01-17 15:55               ` Johannes Schindelin
2008-01-18  1:14               ` [Qemu-devel] " consul
2008-01-18  1:22                 ` Johannes Schindelin
2008-01-18  2:05                   ` Johannes Schindelin
     [not found]                     ` <86022C39-B85C-4769-8ECD-4CB007D82F2E@suse.de>
2008-01-18 12:23                       ` Michael Matz
2008-01-18 12:47                         ` Johannes Schindelin
2008-01-18 13:12                           ` Michael Matz [this message]
2008-01-18 13:41                             ` Johannes Schindelin
2008-01-18 14:05                               ` Michael Matz
2008-01-18 14:22                                 ` Johannes Schindelin
2008-01-18 14:34                                   ` Michael Matz
2008-01-18 14:43                                     ` Johannes Schindelin
2008-01-18 14:54                                       ` Michael Matz
2008-01-18 15:32                                         ` Johannes Schindelin
2008-01-18 15:41                                           ` Michael Matz
2008-01-18 15:51                                             ` Johannes Schindelin
2008-01-18 15:15                                       ` Andreas Färber
2008-01-18  6:23                 ` Alexander Graf
2008-01-18 13:44                   ` Johannes Schindelin
2008-01-18 12:33                 ` Alexander Graf
2008-01-17 14:49           ` [Qemu-devel] " Alexander Graf
2008-01-17 15:29             ` Johannes Schindelin
2008-01-17 17:11               ` Andreas Färber
2008-01-17 17:34                 ` Alexander Graf
2008-01-17 23:25                   ` Andreas Färber
2008-01-18  0:40                     ` Mike Kronenberg
2008-01-18  3:07                       ` Mike Kronenberg
2008-01-18 12:42                         ` Johannes Schindelin
2008-01-18  6:19                     ` Alexander Graf
2008-01-18  8:58                       ` Andreas Färber
2008-01-18 14:52                 ` Andreas Färber
2008-01-17 14:43         ` Jens Arm
2008-01-17 12:44   ` Johannes Schindelin
2008-01-17 13:18   ` Thiemo Seufer
2008-01-17 11:23 ` Johannes Schindelin
2008-01-17  7:54   ` Alexander Graf
2008-01-17 11:40     ` Jens Arm
2008-01-17 12:37     ` Johannes Schindelin
2008-01-17 13:25     ` Johannes Schindelin
2008-01-17 14:27       ` Alexander Graf
2008-01-18 15:41 ` Fabrice Bellard
2008-01-18 15:49   ` Johannes Schindelin
2008-01-18 16:49   ` Alexander Graf
2008-01-18 18:10     ` Johannes Schindelin
2008-01-18 19:08       ` Markus Hitter
2008-01-18 19:28         ` Johannes Schindelin
2008-01-19  8:10           ` Markus Hitter
2008-01-19 11:16             ` Johannes Schindelin
2008-01-19 11:27               ` Markus Hitter
2008-01-19 22:06                 ` Johannes Schindelin

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=Pine.LNX.4.64.0801181352380.20583@wotan.suse.de \
    --to=matz@suse.de \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=agraf@suse.de \
    --cc=consul@collegeclub.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).