Lines Matching +full:pdc +full:- +full:ranges
6 * Copyright (C) 1999-2006 Helge Deller <deller@gmx.de> (07-13-1999)
24 #include <asm/pdc.h>
55 void flush_data_cache_local(void *); /* flushes local data-cache only */
56 void flush_instruction_cache_local(void); /* flushes local code-cache only */
125 test_bit(PG_dcache_dirty, &folio->flags)) { in __update_cache()
126 while (nr--) in __update_cache()
128 clear_bit(PG_dcache_dirty, &folio->flags); in __update_cache()
130 while (nr--) in __update_cache()
139 seq_printf(m, "I-cache\t\t: %ld KB\n", in show_cache_info()
142 snprintf(buf, 32, "%lu-way associative", cache_info.dc_loop); in show_cache_info()
143 seq_printf(m, "D-cache\t\t: %ld KB (%s%s, %s, alias=%d)\n", in show_cache_info()
153 cache_info.dt_conf.tc_sh ? " - shared with ITLB":"" in show_cache_info()
157 /* BTLB - Block TLB */ in show_cache_info()
163 "BTLB fix-entr.\t: %d instruction, %d data (%d combined)\n" in show_cache_info()
164 "BTLB var-entr.\t: %d instruction, %d data (%d combined)\n", in show_cache_info()
244 printk("D-TLB conf: sh %d page %d cst %d aid %d sr %d\n", in parisc_cache_init()
251 printk("I-TLB conf: sh %d page %d cst %d aid %d sr %d\n", in parisc_cache_init()
269 * (1 << (cc_block-1)) * (cc_line << (4 + cnf.cc_shift)) in parisc_cache_init()
271 * http://lists.parisc-linux.org/pipermail/parisc-linux/2004-June/023625.html in parisc_cache_init()
272 * http://lists.parisc-linux.org/pipermail/parisc-linux/2004-June/023671.html in parisc_cache_init()
279 /* stride needs to be non-zero, otherwise cache flushes will not work */ in parisc_cache_init()
283 if ((boot_cpu_data.pdc.capabilities & PDC_MODEL_NVA_MASK) == in parisc_cache_init()
287 panic("SMP kernel required to avoid non-equivalent aliasing"); in parisc_cache_init()
341 * only alias mapping. This guarantees that the page is no-longer in __flush_cache_page()
350 if (vma->vm_flags & VM_EXEC) in __flush_cache_page()
365 /* Use tmpalias flush to prevent data cache move-in */ in flush_kernel_dcache_page_addr()
381 /* Use tmpalias flush to prevent instruction cache move-in */ in flush_kernel_icache_page_addr()
401 if (--nr == 0) in flush_icache_pages()
413 pgd_t *pgd = mm->pgd; in get_ptep()
484 set_bit(PG_dcache_dirty, &folio->flags); in flush_dcache_folio()
496 pgoff = folio->index; in flush_dcache_folio()
506 vma_interval_tree_foreach(vma, &mapping->i_mmap, pgoff, pgoff + nr - 1) { in flush_dcache_folio()
507 unsigned long offset = pgoff - vma->vm_pgoff; in flush_dcache_folio()
510 addr = vma->vm_start; in flush_dcache_folio()
512 if (offset > -nr) { in flush_dcache_folio()
513 pfn -= offset; in flush_dcache_folio()
518 if (addr + nr * PAGE_SIZE > vma->vm_end) in flush_dcache_folio()
519 nr = (vma->vm_end - addr) / PAGE_SIZE; in flush_dcache_folio()
521 if (old_addr == 0 || (old_addr & (SHM_COLOUR - 1)) in flush_dcache_folio()
522 != (addr & (SHM_COLOUR - 1))) { in flush_dcache_folio()
531 if (!(vma->vm_flags & VM_SHARED)) in flush_dcache_folio()
535 old_addr, addr, vma->vm_file); in flush_dcache_folio()
563 alltime = mfctl(16) - alltime; in parisc_setup_cache_timing()
565 size = (unsigned long)(_end - _text); in parisc_setup_cache_timing()
568 rangetime = mfctl(16) - rangetime; in parisc_setup_cache_timing()
597 size = (unsigned long)_end - (unsigned long)_text; in parisc_setup_cache_timing()
600 rangetime = mfctl(16) - rangetime; in parisc_setup_cache_timing()
604 alltime = mfctl(16) - alltime; in parisc_setup_cache_timing()
630 ptep = get_ptep(vma->vm_mm, vmaddr); in flush_cache_page_if_present()
639 struct mm_struct *mm = vma->vm_mm; in flush_cache_page_if_present()
686 end - start >= parisc_tlb_flush_threshold) { in __flush_tlb_range()
691 /* Purge TLB entries for small ranges using the pdtlb and in __flush_tlb_range()
722 usize += vma->vm_end - vma->vm_start; in mm_total_size()
751 flush_cache_pages(vma, vma->vm_start, vma->vm_end); in flush_cache_mm()
757 || end - start >= parisc_cache_flush_threshold) { in flush_cache_range()
761 if (vma->vm_flags & VM_EXEC) in flush_cache_range()
807 struct mm_struct *mm = (vma)->vm_mm; in ptep_clear_flush()
830 /* Prevent cache move-in */ in flush_cache_vmap()
833 if (end - start >= parisc_cache_flush_threshold) { in flush_cache_vmap()
850 if (vm->flags & VM_IOREMAP) { in flush_cache_vmap()
851 physaddr = vm->phys_addr; in flush_cache_vmap()
874 /* Prevent cache move-in */ in flush_cache_vunmap()
944 return -EFAULT; in SYSCALL_DEFINE3()