Re: [PATCH] MIPS: Simplify GCC_OFF_SMALL_ASM definition

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

 



Hello,

Paul Burton wrote:
> The GCC_OFF_SMALL_ASM macro defines the constraint to use for
> instructions needing "small offsets", typically the LL or SC
> instructions. Historically these had 16 bit offsets, but microMIPS &
> MIPS32/MIPS64r6 onwards reduced the width of the offset field.
> 
> GCC 4.9 & higher supports a ZC constraint which matches the offset
> requirements of the LL & SC instructions. Where supported we can use
> the ZC constraint regardless of ISA, and it will handle the requirements
> of the ISA correctly. As such we require 3 cases:
> 
> - GCC 4.9 & higher can use ZC.
> 
> - GCC older than 4.9 must use the older R constraint, which does not
> take into account microMIPS or MIPSr6.
> 
> - microMIPS builds therefore require GCC 4.9 or higher. MIPSr6 support
> was only introduced in newer compilers anyway so it can be ignored
> here.
> 
> The current code complicates this a little by specifically having MIPSr6
> bypass the GCC version check, and using the R constraint for pre-MIPSr6
> builds even if the compiler supports ZC which would be equivalent.
> 
> Simplify this such that the code straightforwardly implements the 3
> cases outlined above.
> 
> For non-GCC compilers we presume that ZC is safe to use. In practice the
> only non-GCC compiler of interest is clang and it has supported the ZC
> constraint since version 3.7.0. It seems safe enough to presume that
> nobody will expect to built a working kernel using a clang version older
> than that, and if they do then they'll have bigger problems. As such we
> don't check the clang version number & just presume ZC is usable when
> the compiler is not GCC.
> 
> Signed-off-by: Paul Burton <paul.burton@xxxxxxxx>

Applied to mips-next.

Thanks,
    Paul

[ This message was auto-generated; if you believe anything is incorrect
  then please email paul.burton@xxxxxxxx to report it. ]


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

  Powered by Linux