MIPS: MT: Remove SMTC support
[linux-drm-fsl-dcu.git] / arch / mips / mm / init.c
index 4fc74c78265a9af156f260a6efd83e908aa8b000..609a0cd749ff73937119a26fdb55d58da5ef0518 100644 (file)
 #include <asm/tlb.h>
 #include <asm/fixmap.h>
 
-/* Atomicity and interruptability */
-#ifdef CONFIG_MIPS_MT_SMTC
-
-#include <asm/mipsmtregs.h>
-
-#define ENTER_CRITICAL(flags) \
-       { \
-       unsigned int mvpflags; \
-       local_irq_save(flags);\
-       mvpflags = dvpe()
-#define EXIT_CRITICAL(flags) \
-       evpe(mvpflags); \
-       local_irq_restore(flags); \
-       }
-#else
-
-#define ENTER_CRITICAL(flags) local_irq_save(flags)
-#define EXIT_CRITICAL(flags) local_irq_restore(flags)
-
-#endif /* CONFIG_MIPS_MT_SMTC */
-
 /*
  * We have up to 8 empty zeroed pages so we can map one of the right colour
  * when needed.         This is necessary only on R4000 / R4400 SC and MC versions
@@ -100,20 +79,6 @@ void setup_zero_pages(void)
        zero_page_mask = ((PAGE_SIZE << order) - 1) & PAGE_MASK;
 }
 
-#ifdef CONFIG_MIPS_MT_SMTC
-static pte_t *kmap_coherent_pte;
-static void __init kmap_coherent_init(void)
-{
-       unsigned long vaddr;
-
-       /* cache the first coherent kmap pte */
-       vaddr = __fix_to_virt(FIX_CMAP_BEGIN);
-       kmap_coherent_pte = kmap_get_fixmap_pte(vaddr);
-}
-#else
-static inline void kmap_coherent_init(void) {}
-#endif
-
 void *kmap_coherent(struct page *page, unsigned long addr)
 {
        enum fixed_addresses idx;
@@ -126,12 +91,7 @@ void *kmap_coherent(struct page *page, unsigned long addr)
 
        pagefault_disable();
        idx = (addr >> PAGE_SHIFT) & (FIX_N_COLOURS - 1);
-#ifdef CONFIG_MIPS_MT_SMTC
-       idx += FIX_N_COLOURS * smp_processor_id() +
-               (in_interrupt() ? (FIX_N_COLOURS * NR_CPUS) : 0);
-#else
        idx += in_interrupt() ? FIX_N_COLOURS : 0;
-#endif
        vaddr = __fix_to_virt(FIX_CMAP_END - idx);
        pte = mk_pte(page, PAGE_KERNEL);
 #if defined(CONFIG_64BIT_PHYS_ADDR) && defined(CONFIG_CPU_MIPS32)
@@ -140,44 +100,29 @@ void *kmap_coherent(struct page *page, unsigned long addr)
        entrylo = pte_to_entrylo(pte_val(pte));
 #endif
 
-       ENTER_CRITICAL(flags);
+       local_irq_save(flags);
        old_ctx = read_c0_entryhi();
        write_c0_entryhi(vaddr & (PAGE_MASK << 1));
        write_c0_entrylo0(entrylo);
        write_c0_entrylo1(entrylo);
-#ifdef CONFIG_MIPS_MT_SMTC
-       set_pte(kmap_coherent_pte - (FIX_CMAP_END - idx), pte);
-       /* preload TLB instead of local_flush_tlb_one() */
-       mtc0_tlbw_hazard();
-       tlb_probe();
-       tlb_probe_hazard();
-       tlbidx = read_c0_index();
-       mtc0_tlbw_hazard();
-       if (tlbidx < 0)
-               tlb_write_random();
-       else
-               tlb_write_indexed();
-#else
        tlbidx = read_c0_wired();
        write_c0_wired(tlbidx + 1);
        write_c0_index(tlbidx);
        mtc0_tlbw_hazard();
        tlb_write_indexed();
-#endif
        tlbw_use_hazard();
        write_c0_entryhi(old_ctx);
-       EXIT_CRITICAL(flags);
+       local_irq_restore(flags);
 
        return (void*) vaddr;
 }
 
 void kunmap_coherent(void)
 {
-#ifndef CONFIG_MIPS_MT_SMTC
        unsigned int wired;
        unsigned long flags, old_ctx;
 
-       ENTER_CRITICAL(flags);
+       local_irq_save(flags);
        old_ctx = read_c0_entryhi();
        wired = read_c0_wired() - 1;
        write_c0_wired(wired);
@@ -189,8 +134,7 @@ void kunmap_coherent(void)
        tlb_write_indexed();
        tlbw_use_hazard();
        write_c0_entryhi(old_ctx);
-       EXIT_CRITICAL(flags);
-#endif
+       local_irq_restore(flags);
        pagefault_enable();
 }
 
@@ -256,7 +200,7 @@ EXPORT_SYMBOL_GPL(copy_from_user_page);
 void __init fixrange_init(unsigned long start, unsigned long end,
        pgd_t *pgd_base)
 {
-#if defined(CONFIG_HIGHMEM) || defined(CONFIG_MIPS_MT_SMTC)
+#ifdef CONFIG_HIGHMEM
        pgd_t *pgd;
        pud_t *pud;
        pmd_t *pmd;
@@ -327,8 +271,6 @@ void __init paging_init(void)
 #ifdef CONFIG_HIGHMEM
        kmap_init();
 #endif
-       kmap_coherent_init();
-
 #ifdef CONFIG_ZONE_DMA
        max_zone_pfns[ZONE_DMA] = MAX_DMA_PFN;
 #endif