kernel-ark/arch/mips/mm
Maciej W. Rozycki 619b6e18fc [MIPS] R4000/R4400 daddiu erratum workaround
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: Maciej W. Rozycki <macro@linux-mips.org>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
2008-01-29 10:14:55 +00:00
..
c-r3k.c [MIPS] c-r3k: Implement flush_cache_range() 2007-10-29 19:35:36 +00:00
c-r4k.c [MIPS] Sibyte: resurrect old cache hack. 2007-11-15 23:21:48 +00:00
c-tx39.c [MIPS] Allow hardwiring of the CPU type to a single type for optimization. 2007-10-11 23:46:15 +01:00
cache.c Remove dma_cache_(wback|inv|wback_inv) functions 2007-10-17 08:42:57 -07:00
cerr-sb1.c [MIPS] Sibyte: Replace use of removed IO_SPACE_BASE with IOADDR. 2007-11-15 23:21:49 +00:00
cex-gen.S
cex-sb1.S
dma-default.c [MIPS] Wrong CONFIG option prevents setup of DMA zone. 2008-01-11 17:05:41 +00:00
extable.c
fault.c pid namespaces: define is_global_init() and is_container_init() 2007-10-19 11:53:37 -07:00
highmem.c [MIPS] Remove LIMITED_DMA support 2007-05-11 14:28:31 +01:00
init.c [MIPS] 64-bit Sibyte kernels need DMA32. 2007-11-26 17:26:14 +00:00
ioremap.c Detach sched.h from mm.h 2007-05-21 09:18:19 -07:00
Makefile [MIPS] Sibyte: Replace SB1 cachecode with standard R4000 class cache code. 2007-10-11 23:46:05 +01:00
pg-r4k.c [MIPS] R4000/R4400 daddiu erratum workaround 2008-01-29 10:14:55 +00:00
pg-sb1.c [MIPS] checkfiles: Fix "need space after that ','" errors. 2007-10-11 23:46:15 +01:00
pgtable-32.c [MIPS] Add external declaration of pagetable_init() to pgalloc.h 2007-02-18 21:31:36 +00:00
pgtable-64.c [MIPS] Add external declaration of pagetable_init() to pgalloc.h 2007-02-18 21:31:36 +00:00
pgtable.c [MIPS] checkfiles: Fix "need space after that ','" errors. 2007-10-11 23:46:15 +01:00
sc-ip22.c
sc-mips.c [MIPS] Fix "no space between function name and open parenthesis" warnings. 2007-10-11 23:46:15 +01:00
sc-r5k.c
sc-rm7k.c
tlb-r3k.c
tlb-r4k.c [MIPS] Fix "no space between function name and open parenthesis" warnings. 2007-10-11 23:46:15 +01:00
tlb-r8k.c [MIPS] checkfiles: Fix "need space after that ','" errors. 2007-10-11 23:46:15 +01:00
tlbex-fault.S
tlbex.c [MIPS] R4000/R4400 daddiu erratum workaround 2008-01-29 10:14:55 +00:00