while ((1UL << shift) <  (maxend / NODEMAPSIZE)) 
while (populate_memnodemap(nodes, numnodes, shift + 1) >= 0) 
int __init compute_hash_shift(struct node *nodes, int numnodes){	int i; 	int shift = 20;	unsigned long addr,maxend=0;		for (i = 0; i < numnodes; i++)		if ((nodes[i].start != nodes[i].end) && (nodes[i].end > maxend))				maxend = nodes[i].end;	while ((1UL << shift) <  (maxend / NODEMAPSIZE))		shift++;	printk (KERN_DEBUG"Using %d for the hash shift. Max adder is %lx \n",			shift,maxend);	memset(memnodemap,0xff,sizeof(*memnodemap) * NODEMAPSIZE);	for (i = 0; i < numnodes; i++) {		if (nodes[i].start == nodes[i].end)			continue;		for (addr = nodes[i].start;		     addr < nodes[i].end;		     addr += (1UL << shift)) {			if (memnodemap[addr >> shift] != 0xff) {				printk(KERN_INFO	"Your memory is not aligned you need to rebuild your kernel "	"with a bigger NODEMAPSIZE shift=%d adder=%lu\n",					shift,addr);				return -1;			} 			memnodemap[addr >> shift] = i;		} 	} 	return shift;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/529a340402e419f935d411ce0a085e96fcaf3872/numa.c/clean/arch/x86_64/mm/numa.c