/* Returns: The index of the region on success, else negative on error.  */
int generic_get_free_region(unsigned long base, unsigned long size, int replace_reg)
/* Returns: The index of the region on success, else negative on error.  */
int generic_get_free_region(unsigned long base, unsigned long size, int replace_reg)
{
	unsigned long lbase, lsize;
	mtrr_type ltype;
	int i, max;
	max = num_var_ranges;
	if (replace_reg >= 0 && replace_reg < max)
		return replace_reg;
	for (i = 0; i < max; ++i) {
		mtrr_if->get(i, &lbase, &lsize, &ltype);
		if (lsize == 0)
			return i;
	}
	return -ENOSPC;
}