pmac_tb_freeze = smp_core99_cypress_tb_freeze; printk(KERN_INFO "Timebase clock is Cypress chip\n"); 
if (device_is_compatible(cc, "pulsar-legacy-slewing")) { pmac_tb_freeze = smp_core99_pulsar_tb_freeze; pmac_tb_pulsar_addr = 0xd2; printk(KERN_INFO "Timebase clock is Pulsar chip\n"); } else if (device_is_compatible(cc, "cy28508")) { pmac_tb_freeze = smp_core99_cypress_tb_freeze; printk(KERN_INFO "Timebase clock is Cypress chip\n"); } 
static int __init smp_core99_probe(void){	struct device_node *cpus;		struct device_node *cc;		int ncpus = 0;	/* Maybe use systemconfiguration here ? */	if (ppc_md.progress) ppc_md.progress("smp_core99_probe", 0x345);	/* Count CPUs in the device-tree */       	for (cpus = NULL; (cpus = of_find_node_by_type(cpus, "cpu")) != NULL;)	       	++ncpus;	printk(KERN_INFO "PowerMac SMP probe found %d cpus\n", ncpus);	/* Nothing more to do if less than 2 of them */	if (ncpus <= 1)		return 1;	/* Look for the clock chip */	for (cc = NULL; (cc = of_find_node_by_name(cc, "i2c-hwclock")) != NULL;) {		struct device_node *p = of_get_parent(cc);		u32 *reg;		int ok;		ok = p && device_is_compatible(p, "uni-n-i2c");		if (!ok)			goto next;		reg = (u32 *)get_property(cc, "reg", NULL);		if (reg == NULL)			goto next;		switch (*reg) {		case 0xd2:			pmac_tb_freeze = smp_core99_cypress_tb_freeze;			printk(KERN_INFO "Timebase clock is Cypress chip\n");			break;		case 0xd4:			pmac_tb_freeze = smp_core99_pulsar_tb_freeze;			printk(KERN_INFO "Timebase clock is Pulsar chip\n");			break;		}		if (pmac_tb_freeze != NULL) {			pmac_tb_clock_chip_host = p;			smp_ops->give_timebase = smp_core99_give_timebase;			smp_ops->take_timebase = smp_core99_take_timebase;			break;		}	next:		of_node_put(p);	}	mpic_request_ipis();	return ncpus;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/f10d20c1f192aa90fc935207f22da32462e793ee/pmac_smp.c/buggy/arch/ppc64/kernel/pmac_smp.c