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
next prev parent 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).