Re: [PATCH v2] mips: lib: uncached: fix non-standard usage of variable 'sp'

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Dec 11, 2020 at 07:54:07PM +0000, Maciej W. Rozycki wrote:
> On Fri, 11 Dec 2020, Anders Roxell wrote:
> 
> > diff --git a/arch/mips/lib/uncached.c b/arch/mips/lib/uncached.c
> > index 09d5deea747f..f80a67c092b6 100644
> > --- a/arch/mips/lib/uncached.c
> > +++ b/arch/mips/lib/uncached.c
> > @@ -37,10 +37,12 @@
> >   */
> >  unsigned long run_uncached(void *func)
> >  {
> > -	register long sp __asm__("$sp");
> >  	register long ret __asm__("$2");
> >  	long lfunc = (long)func, ufunc;
> >  	long usp;
> > +	long sp;
> > +
> > +	__asm__("move %0, $sp" : "=r" (sp));
> 
>  I thought it might be better to make `sp' global instead, so that it's 
> the compiler that chooses how to schedule accesses.  Have you tried that?
> 
>   Maciej

This will not work, as the LLVM Mips backend does not support using $sp
as a global register variable:

https://github.com/llvm/llvm-project/commit/1440bb2a26ff13df1b29762658ee122cc0bc47ae

$ make -skj"$(nproc)" ARCH=mips CROSS_COMPILE=mipsel-linux-gnu- LLVM=1 O=out \
distclean malta_kvm_guest_defconfig vmlinux
fatal error: error in backend: Invalid register name global variable
...

Cheers,
Nathan



[Index of Archives]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux