1. 24 11月, 2012 1 次提交
  2. 09 11月, 2012 2 次提交
    • J
      MIPS: Make irqflags.h functions preempt-safe for non-mipsr2 cpus · e97c5b60
      Jim Quinlan 提交于
      For non MIPSr2 processors, such as the BMIPS 5000, calls to
      arch_local_irq_disable() and others may be preempted, and in doing
      so a stale value may be restored to c0_status.  This fix disables
      preemption for such processors prior to the call and enables it
      after the call.
      
      Those functions that needed this fix have been "outlined" to
      mips-atomic.c, as they are no longer good candidates for inlining.
      
      This bug was observed in a BMIPS 5000, occuring once every few hours
      in a continuous reboot test.  It was traced to the write_lock_irq()
      function which was being invoked in release_task() in exit.c.
      By placing a number of "nops" inbetween the mfc0/mtc0 pair in
      arch_local_irq_disable(), which is called by write_lock_irq(), we
      were able to greatly increase the occurance of this bug.  Similarly,
      the application of this commit silenced the bug.
      Signed-off-by: NJim Quinlan <jim2101024@gmail.com>
      Cc: linux-mips@linux-mips.org
      Cc: David Daney <ddaney.cavm@gmail.com>
      Cc: Kevin Cernekee cernekee@gmail.com
      Cc: Jim Quinlan <jim2101024@gmail.com>
      Patchwork: https://patchwork.linux-mips.org/patch/4321/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      e97c5b60
    • J
      MIPS: Remove irqflags.h dependency from bitops.h · 92d11594
      Jim Quinlan 提交于
      The "else clause" of most functions in bitops.h invoked
      raw_local_irq_{save,restore}() and in doing so had a dependency on
      irqflags.h.  This fix moves said code to bitops.c, removing the
      dependency.
      Signed-off-by: NJim Quinlan <jim2101024@gmail.com>
      Cc: linux-mips@linux-mips.org
      Cc: David Daney <ddaney.cavm@gmail.com>
      Cc: Kevin Cernekee cernekee@gmail.com
      Cc: Jim Quinlan <jim2101024@gmail.com>
      Patchwork: https://patchwork.linux-mips.org/patch/4320/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      92d11594
  3. 17 10月, 2012 2 次提交
  4. 23 8月, 2012 1 次提交
  5. 23 7月, 2012 1 次提交
  6. 01 2月, 2012 1 次提交
  7. 08 12月, 2011 1 次提交
  8. 29 11月, 2011 1 次提交
  9. 19 5月, 2011 1 次提交
  10. 31 3月, 2011 1 次提交
  11. 17 12月, 2010 1 次提交
  12. 13 4月, 2010 2 次提交
  13. 17 6月, 2009 1 次提交
  14. 08 6月, 2009 1 次提交
    • R
      MIPS: Outline udelay and fix a few issues. · 5636919b
      Ralf Baechle 提交于
      Outlining fixes the issue were on certain CPUs such as the R10000 family
      the delay loop would need an extra cycle if it overlaps a cacheline
      boundary.
      
      The rewrite also fixes build errors with GCC 4.4 which was changed in
      way incompatible with the kernel's inline assembly.
      
      Relying on pure C for computation of the delay value removes the need for
      explicit.  The price we pay is a slight slowdown of the computation - to
      be fixed on another day.
      Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      5636919b
  15. 14 5月, 2009 1 次提交
  16. 31 1月, 2009 1 次提交
  17. 11 1月, 2009 1 次提交
  18. 28 10月, 2008 1 次提交
  19. 11 10月, 2008 3 次提交
  20. 21 9月, 2008 1 次提交
  21. 29 4月, 2008 1 次提交
  22. 12 3月, 2008 2 次提交
  23. 29 1月, 2008 4 次提交
    • R
      [MIPS] Eleminate local symbols from the symbol table. · c5ec1983
      Ralf Baechle 提交于
      These symbols appear in oprofile output, stacktraces and similar but only
      make the output harder to read.  Many identical symbol names such as
      "both_aligned" were also being used in multiple source files making it
      impossible to see which file actually was meant.  So let's get rid of them.
      Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      c5ec1983
    • T
      [MIPS] IP28: added cache barrier to assembly routines · 930bff88
      Thomas Bogendoerfer 提交于
      IP28 needs special treatment to avoid speculative accesses. gcc
      takes care for .c code, but for assembly code we need to do it
      manually.
      
      This is taken from Peter Fuersts IP28 patches.
      Signed-off-by: NThomas Bogendoerfer <tsbogend@alpha.franken.de>
      Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      930bff88
    • A
      [MIPS] Put cast inside macro instead of all the callers · 48ef2626
      Andrew Sharp 提交于
      Since all the callers of the PHYS_TO_XKPHYS macro call with a constant,
      put the cast to LL inside the macro where it really should be rather
      than in all the callers.  This makes macros like PHYS_TO_XKSEG_UNCACHED
      work without gcc whining.
      Signed-off-by: NAndrew Sharp <andy.sharp@onstor.com>
      Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      48ef2626
    • M
      [MIPS] R4000/R4400 daddiu erratum workaround · 619b6e18
      Maciej W. Rozycki 提交于
       This complements the generic R4000/R4400 errata workaround code and adds 
      bits for the daddiu problem.  In most places it just modifies handwritten 
      assembly code so that the assembler is allowed to use a temporary register 
      as daddiu may now be treated as a macro that expands to a sequence of li 
      and daddu.  It is the AT register or, where AT is unavailable or used 
      explicitly for another purpose, an explicitly-named register is selected, 
      using the .set at=<reg> feature added recently to gas.  This feature is 
      only used if CONFIG_CPU_DADDI_WORKAROUNDS has been set, so if the 
      workaround remains disabled, the required version of binutils stays 
      unchanged.
      
       Similarly, daddiu instructions put in branch delay slots in noreorder 
      fragments are now taken out of them and the assembler is allowed to 
      reorder them itself as possible (which it does making the whole idea of 
      scheduling them into delay slots manually questionable).
      
       Also in the very few places where such a simple conversion was not 
      possible, a handcoded longer sequence is implemented.
      
       Other than that there are changes to code responsible for building the 
      TLB fault and page clear/copy handlers to avoid daddiu as appropriate.  
      These are only effective if the erratum is verified to be present at the 
      run time.
      
       Finally there is a trivial update to __delay(), because it uses daddiu in 
      a branch delay slot.
      Signed-off-by: NMaciej W. Rozycki <macro@linux-mips.org>
      Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      619b6e18
  24. 12 10月, 2007 1 次提交
  25. 27 8月, 2007 1 次提交
  26. 13 7月, 2007 2 次提交
  27. 11 7月, 2007 3 次提交
  28. 06 7月, 2007 1 次提交