/* Return Value: 0 : SUCCESS <0 : FAILURE  */
static int __devinit bios32_present(const char __iomem *p)
/* Return Value: 0 : SUCCESS <0 : FAILURE  */
static int __devinit bios32_present(const char __iomem *p)
{
	struct bios32_service_dir *bios_32_ptr;
	int length;
	unsigned long map_entry, map_offset;
	bios_32_ptr = (struct bios32_service_dir *) p;
	if (bios_32_ptr->signature == PCI_BIOS32_SD_VALUE) {
		length = bios_32_ptr->length * PCI_BIOS32_PARAGRAPH_LEN;
		if (bios_checksum(p, length)) {
			map_entry = bios_32_ptr->entry_point & ~(PAGE_SIZE - 1);
			map_offset = bios_32_ptr->entry_point - map_entry;
			return cru_detect(map_entry, map_offset);
		}
	}
	return -ENODEV;
}