All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ralf Baechle <ralf@oss.sgi.com>
To: Daniel Jacobowitz <dan@debian.org>
Cc: linux-mips@oss.sgi.com
Subject: Re: Can't build a CONFIG_CPU_NEVADA kernel
Date: Wed, 14 Mar 2001 19:59:19 +0100	[thread overview]
Message-ID: <20010314195919.A1911@bacchus.dhis.org> (raw)
In-Reply-To: <20010314084633.A25674@nevyn.them.org>; from dan@debian.org on Wed, Mar 14, 2001 at 08:46:33AM -0500

On Wed, Mar 14, 2001 at 08:46:33AM -0500, Daniel Jacobowitz wrote:

> I've been trying for a couple of days now to build a MIPS kernel with
> CONFIG_CPU_NEVADA, and I can't get it to work.  r4k_switch.S produces a
> pile of "opcode not supported by processor" errors.

Known and unsolved problem.

> First, I figured out where the problem is coming from:
> 
> r4k_switch.S is included for all processors but the r3000 and r3912. 
> Is that really correct?  Then, it references FPU_SAVE_DOUBLE, which
> includes:

Yes.  Originally written for the R4000 the Dr. Franksteins at MIPS in the
meantime also have taken r4k-style fpus and put them into 32-bit processors,

>         cfc1    tmp,  fcr31;                    \
>         sdc1    $f0,  (THREAD_FPU + 0x000)(thread); \
>         sdc1    $f2,  (THREAD_FPU + 0x010)(thread); \
> 
> 
> The sdc1 instruction in binutils is flagged like this:
>       if (mips_cpu == CPU_R4650)
>         {
>           as_bad (_("opcode not supported on this processor"));
>           return;
>         }
> 
> And the IVR sets CONFIG_CPU_NEVADA, which produces
> ifdef CONFIG_CPU_NEVADA
> GCCFLAGS        += -mcpu=r8000 -mips2 -Wa,--trap -mmad
> endif
> 
> and -mmad becomes -m4650 to the assembler.

Which is pretty much bs because mmad may have been introduced with the
R4640 / R4650 but isn't only available on this processor.  From an ISA
view it's a processor specific extension and as such it should be
controlled by a separate option.  Gcc has -mmad which is fine but passing
it on to as as -m4650 is borken.

> Something is fishy here.  Anyone know what?  I have a suspicion that we
> need to change the way we invoke binutils.  Making -mmad imply -m4650
> just seems lame, since -m4650 also implies -msingle-float, and I don't
> think that's right for the r8000.

R8000 is serious fp, indeed.

> I worked back in time in gcc, binutils, and kernel sources and I
> couldn't figure out what's changed - I'm sure this worked at some
> point.

You'll have to go back far in time.  I introduced the use of -mmad for
Nevada-class CPUs in late summor '97.

As a second bug which makes this one even more annoying something like

	.set	mips3
	sdc1    $f2, (a0)
	.set	mips0

also doesn't work - the assembler will still throw an "opcode not supported
on this processor" message.  After all MIPS III means double precission fp.
And passing additional assembler options with -Wa,foo doesn't help either
in this case so without the necessary gcc / assembler changes this
optimization is lost for now.

  Ralf

  reply	other threads:[~2001-03-14 18:59 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 [this message]
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
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=20010314195919.A1911@bacchus.dhis.org \
    --to=ralf@oss.sgi.com \
    --cc=dan@debian.org \
    --cc=linux-mips@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.