if (context) return context;
if (unlikely(!context)) { spin_lock_irqsave(&ia64_ctx.lock, flags); {  context = mm->context; if (context == 0) { cpus_clear(mm->cpu_vm_mask); if (ia64_ctx.next >= ia64_ctx.limit) wrap_mmu_context(mm); mm->context = context = ia64_ctx.next++; } } spin_unlock_irqrestore(&ia64_ctx.lock, flags); }  delayed_tlb_flush();
get_mmu_context (struct mm_struct *mm){	unsigned long flags;	mm_context_t context = mm->context;	if (context)		return context;	spin_lock_irqsave(&ia64_ctx.lock, flags);	{		/* re-check, now that we've got the lock: */		context = mm->context;		if (context == 0) {			cpus_clear(mm->cpu_vm_mask);			if (ia64_ctx.next >= ia64_ctx.limit)				wrap_mmu_context(mm);			mm->context = context = ia64_ctx.next++;		}	}	spin_unlock_irqrestore(&ia64_ctx.lock, flags);	return context;}