/* The LSB of all start and end addresses in the node map is the value of the maximum possible shift.  */
static int __init extract_lsb_from_nodes(const struct bootnode *nodes, int numnodes)
/* The LSB of all start and end addresses in the node map is the value of the maximum possible shift.  */
static int __init extract_lsb_from_nodes(const struct bootnode *nodes, int numnodes)
{
	int i, nodes_used = 0;
	unsigned long start, end;
	unsigned long bitfield = 0, memtop = 0;
	for (i = 0; i < numnodes; i++) {
		start = nodes[i].start;
		end = nodes[i].end;
		if (start >= end)
			continue;
		bitfield |= start;
		nodes_used++;
		if (end > memtop)
			memtop = end;
	}
	if (nodes_used <= 1)
		i = 63;
	else
		i = find_first_bit(&bitfield, sizeof(unsigned long)*8);
	memnodemapsize = (memtop >> i)+1;
	return i;
}