spin_lock(&init_mm.page_table_lock); 
static int remap_area_pages(unsigned long address, unsigned long phys_addr,				 unsigned long size, pgprot_t prot){	int error;	pgd_t * dir;	unsigned long end = address + size;	phys_addr -= address;	dir = pgd_offset(&init_mm, address);	flush_cache_all();	if (address >= end)		BUG();	spin_lock(&init_mm.page_table_lock);	do {		pud_t *pud;		pmd_t *pmd;		error = -ENOMEM;		pud = pud_alloc(&init_mm, dir, address);		if (!pud)			break;		pmd = pmd_alloc(&init_mm, pud, address);		if (!pmd)			break;		if (remap_area_pmd(pmd, address, end - address,				   phys_addr + address, prot))			break;		error = 0;		address = (address + PGDIR_SIZE) & PGDIR_MASK;		dir++;	} while (address && (address < end));	spin_unlock(&init_mm.page_table_lock);	flush_tlb_all();	return error;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/872fec16d9a0ed3b75b8893aa217e49cca575ee5/ioremap.c/clean/arch/cris/mm/ioremap.c