dbell->dinb(port, DBELL_SID(dmsg), DBELL_TID(dmsg), 
dbell->dinb(port, dbell->dev_id, DBELL_SID(dmsg), DBELL_TID(dmsg), 
mpc85xx_rio_dbell_handler(int irq, void *dev_instance, struct pt_regs *regs){	int dsr;	struct rio_mport *port = (struct rio_mport *)dev_instance;	dsr = in_be32((void *)&msg_regs->dsr);	if (dsr & DOORBELL_DSR_TE) {		pr_info("RIO: doorbell reception error\n");		out_be32((void *)&msg_regs->dsr, DOORBELL_DSR_TE);		goto out;	}	if (dsr & DOORBELL_DSR_QFI) {		pr_info("RIO: doorbell queue full\n");		out_be32((void *)&msg_regs->dsr, DOORBELL_DSR_QFI);		goto out;	}	/* XXX Need to check/dispatch until queue empty */	if (dsr & DOORBELL_DSR_DIQI) {		u32 dmsg =		    (u32) dbell_ring.virt +		    (in_be32((void *)&msg_regs->dqdpar) & 0xfff);		u32 dmr;		struct rio_dbell *dbell;		int found = 0;		pr_debug		    ("RIO: processing doorbell, sid %2.2x tid %2.2x info %4.4x\n",		     DBELL_SID(dmsg), DBELL_TID(dmsg), DBELL_INF(dmsg));		list_for_each_entry(dbell, &port->dbells, node) {			if ((dbell->res->start <= DBELL_INF(dmsg)) &&			    (dbell->res->end >= DBELL_INF(dmsg))) {				found = 1;				break;			}		}		if (found) {			dbell->dinb(port, DBELL_SID(dmsg), DBELL_TID(dmsg),				    DBELL_INF(dmsg));		} else {			pr_debug			    ("RIO: spurious doorbell, sid %2.2x tid %2.2x info %4.4x\n",			     DBELL_SID(dmsg), DBELL_TID(dmsg), DBELL_INF(dmsg));		}		dmr = in_be32((void *)&msg_regs->dmr);		out_be32((void *)&msg_regs->dmr, dmr | DOORBELL_DMR_DI);		out_be32((void *)&msg_regs->dsr, DOORBELL_DSR_DIQI);	}      out:	return IRQ_HANDLED;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/6978bbc097c2f665c336927a9d56ae39ef75fa56/ppc85xx_rio.c/clean/arch/ppc/syslib/ppc85xx_rio.c