Beispiel #1
0
void __glue(_CACHE, _flush_user_cache_range)(unsigned long start, unsigned long end,
                                            unsigned int flags)
{
	struct mm_struct *mm;

	if (current->mm)
		mm = current->mm;
	else if (current->active_mm)
		mm = current->active_mm;
	else {
		printk("active_mm: No mm... %lx-%lx\n", start, end);
		return;
	}

	for (start &= PAGE_MASK; start < end; start += PAGE_SIZE) {
		pte_t *ptep = lookup_pte(mm, start);
		if (ptep && pte_present(*ptep)) {
			unsigned long k = pte_pfn(*ptep) << PAGE_SHIFT;
			unsigned long e = k + PAGE_SIZE;
			l4_cache_flush_data(k, e);
		}
	}
}
Beispiel #2
0
void __glue(_CACHE, _dma_flush_range)(const void *start, const void *stop)
{
	l4_cache_flush_data((unsigned long)start, (unsigned long)stop);
}
Beispiel #3
0
void __glue(_CACHE, _dma_flush_range)(const void *start, const void *stop)
{
	printk("%s(%p, %p) called.\n", __func__, start, stop);
	l4_cache_flush_data((unsigned long)start, (unsigned long)stop);
}