From: "Kevin D. Kissell" <kevink@mips.com>
To: "Ralf Baechle" <ralf@oss.sgi.com>
Cc: <linux-mips@oss.sgi.com>
Subject: Re: Can't build a CONFIG_CPU_NEVADA kernel
Date: Wed, 14 Mar 2001 23:11:47 +0100 [thread overview]
Message-ID: <00fc01c0acd3$c881ca80$0deca8c0@Ulysses> (raw)
In-Reply-To: 20010314202058.B1911@bacchus.dhis.org
> > If it does, I can probably whip up a -mmad patch to binutils to allow
> > those opcodes - or I could introduce -mnevada, or whatever the
> > appropriate term would be, to mean "r8000 with the mad* extensions".
> > In fact, that would probably be easiest, and sounds like the most
> > correct.
>
> Don't think of the r8000; the kernel only uses the -mcpu=r8000 option
> because the Nevada CPUs have _somewhat_ similar scheduling properties
> to the R8000. This of it as an independant ISA expension which can
> be used with an arbitrary MIPS processor - even a R3000 processor.
In the interests of historical accuracy and general pedantry,
let me point out that -mcpu=r8000 is in effect a rather klugy
way of saying "-mips4" to compilers that predate official
MIPS IV ISA support. The R8000 was the first MIPS IV
CPU, followed by the R10000 and the R5000. The "Nevada"
processors added three implementation specific instructions
to the MIPS IV ISA: MAD, MADU, and MUL (targeted multiply).
"Correct" usage would be to enable those three instructions
with a "-mcpu=nevada", or better still, "-mcpu=r5200" (for
consistency), and to enable the rest of the MIPS IV ISA
with "-mips4" instead of the archaic r8000 hack.
Note, furthermore, that -mmad needs to be handled with care:
Prior to MIPS standardizing the instruction as part of
MIPS32, there were four or five subtly (or not so subltly)
different definitions of integer multiply-accumulate for MIPS.
Most use the same opcode, but even those can differ in side
effects (is the rd field interpreted, etc.). A R4650 madd operation
will probably behave equivalently on a Nevada CPU,
but certainly not on a Vr41xx part, for example.
Regards,
Kevin K.
WARNING: multiple messages have this Message-ID (diff)
From: "Kevin D. Kissell" <kevink@mips.com>
To: Ralf Baechle <ralf@oss.sgi.com>
Cc: linux-mips@oss.sgi.com
Subject: Re: Can't build a CONFIG_CPU_NEVADA kernel
Date: Wed, 14 Mar 2001 23:11:47 +0100 [thread overview]
Message-ID: <00fc01c0acd3$c881ca80$0deca8c0@Ulysses> (raw)
Message-ID: <20010314221147.GeVAT-ld-LSQMeo8HtmQ5NYKAgvWcARHZzauU9GPHW0@z> (raw)
In-Reply-To: 20010314202058.B1911@bacchus.dhis.org
> > If it does, I can probably whip up a -mmad patch to binutils to allow
> > those opcodes - or I could introduce -mnevada, or whatever the
> > appropriate term would be, to mean "r8000 with the mad* extensions".
> > In fact, that would probably be easiest, and sounds like the most
> > correct.
>
> Don't think of the r8000; the kernel only uses the -mcpu=r8000 option
> because the Nevada CPUs have _somewhat_ similar scheduling properties
> to the R8000. This of it as an independant ISA expension which can
> be used with an arbitrary MIPS processor - even a R3000 processor.
In the interests of historical accuracy and general pedantry,
let me point out that -mcpu=r8000 is in effect a rather klugy
way of saying "-mips4" to compilers that predate official
MIPS IV ISA support. The R8000 was the first MIPS IV
CPU, followed by the R10000 and the R5000. The "Nevada"
processors added three implementation specific instructions
to the MIPS IV ISA: MAD, MADU, and MUL (targeted multiply).
"Correct" usage would be to enable those three instructions
with a "-mcpu=nevada", or better still, "-mcpu=r5200" (for
consistency), and to enable the rest of the MIPS IV ISA
with "-mips4" instead of the archaic r8000 hack.
Note, furthermore, that -mmad needs to be handled with care:
Prior to MIPS standardizing the instruction as part of
MIPS32, there were four or five subtly (or not so subltly)
different definitions of integer multiply-accumulate for MIPS.
Most use the same opcode, but even those can differ in side
effects (is the rd field interpreted, etc.). A R4650 madd operation
will probably behave equivalently on a Nevada CPU,
but certainly not on a Vr41xx part, for example.
Regards,
Kevin K.
next prev parent reply other threads:[~2001-03-14 22:08 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-03-14 13:46 Can't build a CONFIG_CPU_NEVADA kernel Daniel Jacobowitz
2001-03-14 18:59 ` Ralf Baechle
2001-03-14 19:05 ` Daniel Jacobowitz
2001-03-14 19:20 ` Ralf Baechle
2001-03-14 19:48 ` Jun Sun
2001-03-14 20:02 ` Ralf Baechle
2001-03-14 20:56 ` Daniel Jacobowitz
2001-03-14 22:11 ` Kevin D. Kissell [this message]
2001-03-14 22:11 ` Kevin D. Kissell
2001-03-14 22:47 ` Kevin D. Kissell
2001-03-14 22:47 ` Kevin D. Kissell
2001-03-15 1:50 ` Pete Popov
2001-03-15 8:01 ` Kevin D. Kissell
2001-03-15 8:01 ` Kevin D. Kissell
2001-03-16 14:04 ` Ralf Baechle
2001-03-16 14:04 ` Ralf Baechle
2001-03-16 18:02 ` Daniel Jacobowitz
2001-03-16 18:16 ` Ralf Baechle
2001-03-16 18:46 ` Kevin D. Kissell
2001-03-16 18:46 ` Kevin D. Kissell
2001-03-16 19:35 ` Ralf Baechle
2001-03-16 19:35 ` Ralf Baechle
2001-03-16 15:34 ` Ralf Baechle
2001-03-16 15:34 ` Ralf Baechle
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='00fc01c0acd3$c881ca80$0deca8c0@Ulysses' \
--to=kevink@mips.com \
--cc=linux-mips@oss.sgi.com \
--cc=ralf@oss.sgi.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