if (POW2(mapped_space_bits) >= pta) panic("mm/init: overlap between virtually mapped linear page table and " "mapped kernel space!"); 
ia64_mmu_init (void *my_cpu_data){	unsigned long psr, pta, impl_va_bits;	extern void __devinit tlb_init (void);#ifdef CONFIG_DISABLE_VHPT#	define VHPT_ENABLE_BIT	0#else#	define VHPT_ENABLE_BIT	1#endif	/* Pin mapping for percpu area into TLB */	psr = ia64_clear_ic();	ia64_itr(0x2, IA64_TR_PERCPU_DATA, PERCPU_ADDR,		 pte_val(pfn_pte(__pa(my_cpu_data) >> PAGE_SHIFT, PAGE_KERNEL)),		 PERCPU_PAGE_SHIFT);	ia64_set_psr(psr);	ia64_srlz_i();	/*	 * Check if the virtually mapped linear page table (VMLPT) overlaps with a mapped	 * address space.  The IA-64 architecture guarantees that at least 50 bits of	 * virtual address space are implemented but if we pick a large enough page size	 * (e.g., 64KB), the mapped address space is big enough that it will overlap with	 * VMLPT.  I assume that once we run on machines big enough to warrant 64KB pages,	 * IMPL_VA_MSB will be significantly bigger, so this is unlikely to become a	 * problem in practice.  Alternatively, we could truncate the top of the mapped	 * address space to not permit mappings that would overlap with the VMLPT.	 * --davidm 00/12/06	 */#	define pte_bits			3#	define mapped_space_bits	(3*(PAGE_SHIFT - pte_bits) + PAGE_SHIFT)	/*	 * The virtual page table has to cover the entire implemented address space within	 * a region even though not all of this space may be mappable.  The reason for	 * this is that the Access bit and Dirty bit fault handlers perform	 * non-speculative accesses to the virtual page table, so the address range of the	 * virtual page table itself needs to be covered by virtual page table.	 */#	define vmlpt_bits		(impl_va_bits - PAGE_SHIFT + pte_bits)#	define POW2(n)			(1ULL << (n))	impl_va_bits = ffz(~(local_cpu_data->unimpl_va_mask | (7UL << 61)));	if (impl_va_bits < 51 || impl_va_bits > 61)		panic("CPU has bogus IMPL_VA_MSB value of %lu!\n", impl_va_bits - 1);	/* place the VMLPT at the end of each page-table mapped region: */	pta = POW2(61) - POW2(vmlpt_bits);	if (POW2(mapped_space_bits) >= pta)		panic("mm/init: overlap between virtually mapped linear page table and "		      "mapped kernel space!");	/*	 * Set the (virtually mapped linear) page table address.  Bit	 * 8 selects between the short and long format, bits 2-7 the	 * size of the table, and bit 0 whether the VHPT walker is	 * enabled.	 */	ia64_set_pta(pta | (0 << 8) | (vmlpt_bits << 2) | VHPT_ENABLE_BIT);	ia64_tlb_init();#ifdef	CONFIG_HUGETLB_PAGE	ia64_set_rr(HPAGE_REGION_BASE, HPAGE_SHIFT << 2);	ia64_srlz_d();#endif}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/6cf07a8cc86a0b471466c7fe45892f7ef434015b/init.c/buggy/arch/ia64/mm/init.c