add: copy_rom(di);
context: static void probe_devices(void){	uint32 pci_index = 0;	uint32 count = 0;	device_info *di = pd->di;	char tmp_name[B_OS_NAME_LENGTH];	/* while there are more pci devices */	while ((count < MAX_DEVICES) && ((*pci_bus->get_nth_pci_info)(pci_index, &(di->pcii)) == B_NO_ERROR))	{		int vendor = 0;		/* if we match a supported vendor */		while (SupportedDevices[vendor].vendor)		{			if (SupportedDevices[vendor].vendor == di->pcii.vendor_id)			{				uint16 *devices = SupportedDevices[vendor].devices;				/* while there are more supported devices */				while (*devices)				{					/* if we match a supported device */					if (*devices == di->pcii.device_id )					{						/* publish the device name */						sprintf(tmp_name, DEVICE_FORMAT,							di->pcii.vendor_id, di->pcii.device_id,							di->pcii.bus, di->pcii.device, di->pcii.function);						/* tweak the exported name to show first in the alphabetically ordered /dev/						 * hierarchy folder, so the system will use it as primary adaptor if requested						 * via mga.settings. */						if (strcmp(tmp_name, current_settings.primary) == 0)							sprintf(tmp_name, "-%s", current_settings.primary);						/* add /dev/ hierarchy path */						sprintf(di->name, "graphics/%s", tmp_name);						/* remember the name */						pd->device_names[count] = di->name;						/* mark the driver as available for R/W open */						di->is_open = 0;						/* mark areas as not yet created */						di->shared_area = -1;						/* mark pointer to shared data as invalid */						di->si = NULL;						/* inc pointer to device info */						di++;						/* inc count */						count++;						/* break out of these while loops */						goto next_device;					}					/* next supported device */					devices++;				}			}			vendor++;		}next_device:		/* next pci_info struct, please */		pci_index++;	}	/* propagate count */	pd->count = count;	/* terminate list of device names with a null pointer */	pd->device_names[pd->count] = NULL;}