From: Paul Mundt <lethal@linux-sh.org>
To: Vladimir Prus <vladimir@codesourcery.com>
Cc: Paul Brook <paul@codesourcery.com>, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH] SH: Add prefi, icbi, synco
Date: Tue, 21 Oct 2008 01:49:13 +0900 [thread overview]
Message-ID: <20081020164913.GA24337@linux-sh.org> (raw)
In-Reply-To: <200810202031.19287.vladimir@codesourcery.com>
On Mon, Oct 20, 2008 at 08:31:19PM +0400, Vladimir Prus wrote:
> On Monday 20 October 2008 20:27:00 Paul Brook wrote:
> > > > I disagree. This is something that should be done right from the start.
> > > > Trying to fix it up later is a real pain. Doing fine grained features
> > > > isn't that hard. MIPS, sparc, arm, ppc, m68k and sparc already do this.
> > > > IIRC binutils is only complicated because it tried to create a strict
> > > > hieracy of features, rather than using feature bits.
> > >
> > > When we do it does not matter, but it is completely unrelated from this
> > > patch, in that there are already plenty of instructions that are specific
> > > to a certain CPU family that we don't perform an illegal instruction
> > > exception for. Trying to force the prefi/icbi/synco cases to rework all
> > > of the existing instructions that aren't universal doesn't make a lot of
> > > sense, as it is a clear incremental change of existing behaviour, rather
> > > than a situation caused purely by the addition of these new instructions.
> >
> > The only cpu we currently claim to support is SH4. When adding support for
> > other cores these should be properly conditionalized. Unconditionally
> > implementing additional instructions is a regression. I don't consider "we'll
> > fix this at some undefined point in the future" to be a good enough answer.
>
> Can you outline what changes should I make to implement proper conditionalization?
>
The issue comes with how the ISA is versioned. It changes across CPU
families, with different families borrowing off of each other but not
being strict supersets of previous generations. It is a complicated mess
in binutils, and if someone has a better idea of how to do that cleanly
in qemu, then that is certainly something that should be experimented
with.
Regardless, as Paul seemed to completely ignore, we already have non-SH4
instructions in the tree already, so the illegal instruction behaviour is
already bogus when we hit SH-4A instructions on SH-4. There are also
extra registers that are not handled under the SH-4 CPU definition
in-tree.
Going be a set of features is possible to some extent, but there are
fundamental architectural differences in SH-4A compared to SH-4, so the
feature thing is rather misleading. The existing target-sh4 thing really
ought to be renamed to target-sh and generalized. Adding in more SH-4A
logic is going to create more deviation, and it is already going to be
helpful to start isolating the SH-4 and up parts so that parts that
diverged from before that point can be integrated. Note that even though
SH-4 and up excluded SH-2 and SH-3 at the time, SH-2A borrows quite
heavily from SH-4 and SH-4A also, in which case the feature tests would
be helpful.
In addition to the CPU subtype, it is necessary to track the CPU family
that it falls under also, as this is the only way to know properly how
the instructions have been inherited. The feature bits will have to be
fairly fine grained, as there are CPUs that implement the same features
in different ways. SH-5 for example supports synco/prefi/icbi in two
different ways, depending on which instruction set mode it is in.
next prev parent reply other threads:[~2008-10-20 16:49 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-10-17 12:52 [Qemu-devel] [PATCH] SH: Add prefi, icbi, synco Vladimir Prus
2008-10-17 19:56 ` Paul Brook
2008-10-20 4:01 ` Paul Mundt
2008-10-20 10:54 ` Paul Brook
2008-10-20 13:00 ` Paul Mundt
2008-10-20 16:27 ` Paul Brook
2008-10-20 16:31 ` Vladimir Prus
2008-10-20 16:46 ` Paul Brook
2008-10-20 16:49 ` Paul Mundt [this message]
2008-10-20 17:07 ` Paul Brook
2008-10-20 17:15 ` Laurent Desnogues
2008-10-20 17:19 ` Paul Brook
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=20081020164913.GA24337@linux-sh.org \
--to=lethal@linux-sh.org \
--cc=paul@codesourcery.com \
--cc=qemu-devel@nongnu.org \
--cc=vladimir@codesourcery.com \
/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).