Re: [PATCH] MIPS: dec: Avoid la pseudo-instruction in delay slots

From: Maciej W. Rozycki
Date: Sun Oct 02 2016 - 20:23:31 EST

On Tue, 20 Sep 2016, Ralf Baechle wrote:

> > I take it it's a quest for a clean compilation with no warnings reported,
> > as the message is otherwise harmless and correct code is produced here.
> >
> > Some of the systems affected are not necessarily fast (e.g. clocked at
> > 12MHz), so I wonder if we shouldn't just bite the bullet and expand the
> > %hi/%lo pair here. Even with R4k DECstations we only support `-msym32'
> > compilation only, due to R4k errata, so it's not like the higher parts
> > will ever be needed for address calculation.
> >
> > Alternatively we could have a `.set warn'/`.set nowarn' setting in GAS,
> > previously discussed I believe, although it would take a bit to propagate.
> Yeah, I'm already looking into the other direction whenever this warning
> pops up - and it does so often. I've even pondered submitting something
> like -Werror for gas ;-)

Well, the GCC driver already handles it and catches warnings from GAS if
requested, doesn't it?

> It's not very elegant but you could just open code everything, see below
> patch. Compiles but not runtime tested due to lack of hardware.

That's what I noted above and as also noted you only need the %hi/%lo
variant due to the `-msym32' restriction for 64-bit DECstation kernels;
the kernel is always linked to KSEG0.

Alternatively for maximum safety perhaps we could define PTR_LA_EXPLICIT
or suchlike with a suitable open-coded sequence for the pointer width
chosen; note however that `-msym32' doesn't set any CPP's internal
predefined macro, so we'd have to define our own to control this.

> Maciej, can you test this?

I'll see what I can do; I've been travelling a lot lately.