1. 17 2月, 2015 1 次提交
  2. 24 11月, 2014 1 次提交
    • M
      MIPS: Fix microMIPS LL/SC immediate offsets · b0984c43
      Maciej W. Rozycki 提交于
      In the microMIPS encoding some memory access instructions have their
      immediate offset reduced to 12 bits only.  That does not match the GCC
      `R' constraint we use in some places to satisfy the requirement,
      resulting in build failures like this:
      
      {standard input}: Assembler messages:
      {standard input}:720: Error: macro used $at after ".set noat"
      {standard input}:720: Warning: macro instruction expanded into multiple instructions
      
      Fix the problem by defining a macro, `GCC_OFF12_ASM', that expands to
      the right constraint depending on whether microMIPS or standard MIPS
      code is produced.  Also apply the fix to where `m' is used as in the
      worst case this change does nothing, e.g. where the pointer was already
      in a register such as a function argument and no further offset was
      requested, and in the best case it avoids an extraneous sequence of up
      to two instructions to load the high 20 bits of the address in the LL/SC
      loop.  This reduces the risk of lock contention that is the higher the
      more instructions there are in the critical section between LL and SC.
      
      Strictly speaking we could just bulk-replace `R' with `ZC' as the latter
      constraint adjusts automatically depending on the ISA selected.
      However it was only introduced with GCC 4.9 and we keep supporing older
      compilers for the standard MIPS configuration, hence the slightly more
      complicated approach I chose.
      
      The choice of a zero-argument function-like rather than an object-like
      macro was made so that it does not look like a function call taking the
      C expression used for the constraint as an argument.  This is so as not
      to confuse the reader or formatting checkers like `checkpatch.pl' and
      follows previous practice.
      Signed-off-by: NMaciej W. Rozycki <macro@codesourcery.com>
      Signed-off-by: NSteven J. Hill <Steven.Hill@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Patchwork: https://patchwork.linux-mips.org/patch/8482/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      b0984c43
  3. 01 4月, 2014 1 次提交
    • R
      MIPS: Fix gigaton of warning building with microMIPS. · a809d460
      Ralf Baechle 提交于
      With binutils 2.24 the attempt to switch with microMIPS mode to MIPS III
      mode through .set mips3 results in *lots* of warnings like
      
      {standard input}: Assembler messages:
      {standard input}:397: Warning: the 64-bit MIPS architecture does not support the `smartmips' extension
      
      during a kernel build.  Fixed by using .set arch=r4000 instead.
      
      This breaks support for building the kernel with binutils 2.13 which
      was supported for 32 bit kernels only anyway and 2.14 which was a bad
      vintage for MIPS anyway.
      Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      a809d460
  4. 01 2月, 2013 2 次提交
  5. 31 3月, 2011 1 次提交
  6. 11 10月, 2008 1 次提交
  7. 11 7月, 2007 1 次提交