RE: [PATCH v2 3/6] powerpc: Convert flush_icache_range & friends to C

From: Alastair D'Silva
Date: Tue Sep 03 2019 - 23:42:39 EST


On Tue, 2019-09-03 at 22:11 +0200, Gabriel Paubert wrote:
> On Tue, Sep 03, 2019 at 01:31:57PM -0500, Segher Boessenkool wrote:
> > On Tue, Sep 03, 2019 at 07:05:19PM +0200, Christophe Leroy wrote:
> > > Le 03/09/2019 Ã 18:04, Segher Boessenkool a Ãcrit :
> > > > (Why are they separate though? It could just be one loop var).
> > >
> > > Yes it could just be a single loop var, but in that case it would
> > > have
> > > to be reset at the start of the second loop, which means we would
> > > have
> > > to pass 'addr' for resetting the loop anyway,
> >
> > Right, I noticed that after hitting send, as usual.
> >
> > > so I opted to do it
> > > outside the inline asm by using to separate loop vars set to
> > > their
> > > starting value outside the inline asm.
> >
> > The thing is, the way it is written now, it will get separate
> > registers
> > for each loop (with proper earlyclobbers added). Not that that
> > really
> > matters of course, it just feels wrong :-)
>
> After "mtmsr %3", it is always possible to copy %0 to %3 and use it
> as
> an address register for the second loop. One register less to
> allocate
> for the compiler. Constraints of course have to be adjusted.
>
>

Given that we're dealing with registers holding data that has been
named outside the assembler, this feels dirty. We'd be using the
register passed in as 'msr' to hold the address instead.

Since we're not short on registers, I don't see this as a good change.

--
Alastair D'Silva
Open Source Developer
Linux Technology Centre, IBM Australia
mob: 0423 762 819