/* To locate and identify modules which reside at fixed I/O addresses, which do not self-identify via architected bus walks.  */
int pdc_system_map_find_mods(struct pdc_system_map_mod_info *pdc_mod_info, struct pdc_module_path *mod_path, long mod_index)
/* To locate and identify modules which reside at fixed I/O addresses, which do not self-identify via architected bus walks.  */
int pdc_system_map_find_mods(struct pdc_system_map_mod_info *pdc_mod_info, struct pdc_module_path *mod_path, long mod_index)
{
	int retval;
	unsigned long flags;
	spin_lock_irqsave(&pdc_lock, flags);
	retval = mem_pdc_call(PDC_SYSTEM_MAP, PDC_FIND_MODULE, __pa(pdc_result), 
			      __pa(pdc_result2), mod_index);
	convert_to_wide(pdc_result);
	memcpy(pdc_mod_info, pdc_result, sizeof(*pdc_mod_info));
	memcpy(mod_path, pdc_result2, sizeof(*mod_path));
	spin_unlock_irqrestore(&pdc_lock, flags);
	pdc_mod_info->mod_addr = f_extend(pdc_mod_info->mod_addr);
	return retval;
}