if (--size == 0) break; 
size--; }  if ((off & 3) && size > 2) { u16 val; pci_read_config_word(dev, off, &val); data[off - init_off] = val & 0xff; data[off - init_off + 1] = (val >> 8) & 0xff; off += 2; size -= 2; 
pci_read_config(struct kobject *kobj, char *buf, loff_t off, size_t count){	struct pci_dev *dev = to_pci_dev(container_of(kobj,struct device,kobj));	unsigned int size = 64;	loff_t init_off = off;	/* Several chips lock up trying to read undefined config space */	if (capable(CAP_SYS_ADMIN)) {		size = dev->cfg_size;	} else if (dev->hdr_type == PCI_HEADER_TYPE_CARDBUS) {		size = 128;	}	if (off > size)		return 0;	if (off + count > size) {		size -= off;		count = size;	} else {		size = count;	}	while (off & 3) {		unsigned char val;		pci_read_config_byte(dev, off, &val);		buf[off - init_off] = val;		off++;		if (--size == 0)			break;	}	while (size > 3) {		unsigned int val;		pci_read_config_dword(dev, off, &val);		buf[off - init_off] = val & 0xff;		buf[off - init_off + 1] = (val >> 8) & 0xff;		buf[off - init_off + 2] = (val >> 16) & 0xff;		buf[off - init_off + 3] = (val >> 24) & 0xff;		off += 4;		size -= 4;	}	while (size > 0) {		unsigned char val;		pci_read_config_byte(dev, off, &val);		buf[off - init_off] = val;		off++;		--size;	}	return count;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/4c0619add8c3a8b28e7fae8b15cc7b62de2f8148/pci-sysfs.c/clean/drivers/pci/pci-sysfs.c