Exemplo n.º 1
0
Arquivo: tlb_64.c Projeto: E-LLP/n900
/*
 * This function is called when terminating an mmu batch or when a batch
 * is full. It will perform the flush of all the entries currently stored
 * in a batch.
 *
 * Must be called from within some kind of spinlock/non-preempt region...
 */
void __flush_tlb_pending(struct ppc64_tlb_batch *batch)
{
	cpumask_t tmp;
	int i, local = 0;

	i = batch->index;
	tmp = cpumask_of_cpu(smp_processor_id());
	if (cpus_equal(batch->mm->cpu_vm_mask, tmp))
		local = 1;
	if (i == 1)
		flush_hash_page(batch->vaddr[0], batch->pte[0],
				batch->psize, batch->ssize, local);
	else
		flush_hash_range(i, local);
	batch->index = 0;
}
Exemplo n.º 2
0
/*
 * This function is called when terminating an mmu batch or when a batch
 * is full. It will perform the flush of all the entries currently stored
 * in a batch.
 *
 * Must be called from within some kind of spinlock/non-preempt region...
 */
void __flush_tlb_pending(struct ppc64_tlb_batch *batch)
{
    const struct cpumask *tmp;
    int i, local = 0;

    i = batch->index;
    tmp = cpumask_of(smp_processor_id());
    if (cpumask_equal(mm_cpumask(batch->mm), tmp))
        local = 1;
    if (i == 1)
        flush_hash_page(batch->vpn[0], batch->pte[0],
                        batch->psize, batch->ssize, local);
    else
        flush_hash_range(i, local);
    batch->index = 0;
}
Exemplo n.º 3
0
void __flush_tlb_pending(struct ppc64_tlb_batch *batch)
{
	int i;
	cpumask_t tmp = cpumask_of_cpu(smp_processor_id());
	int local = 0;

	BUG_ON(in_interrupt());

	i = batch->index;
	if (cpus_equal(batch->mm->cpu_vm_mask, tmp))
		local = 1;

	if (i == 1)
		flush_hash_page(batch->context, batch->addr[0], batch->pte[0],
				local);
	else
		flush_hash_range(batch->context, i, local);
	batch->index = 0;
}
Exemplo n.º 4
0
void __flush_tlb_pending(struct ppc64_tlb_batch *batch)
{
    int i;
    int cpu;
    cpumask_t tmp;
    int local = 0;

    BUG_ON(in_interrupt());

    cpu = get_cpu();
    i = batch->index;
    tmp = cpumask_of_cpu(cpu);
    if (cpus_equal(batch->mm->cpu_vm_mask, tmp))
        local = 1;

    if (i == 1)
        flush_hash_page(batch->vaddr[0], batch->pte[0],
                        batch->psize, local);
    else
        flush_hash_range(i, local);
    batch->index = 0;
    put_cpu();
}