volatile u_char *cd_base = cl_cons.cl_vaddr;
volatile struct clreg *cl_reg = cl_cons.cl_vaddr;
clcngetc(dev)	dev_t dev;{	u_char val, reoir, licr, isrl, data, status, fifo_cnt;	int got_char = 0;	volatile u_char *cd_base = cl_cons.cl_vaddr;	volatile struct pcctworeg *pcc2_base = cl_cons.pcctwoaddr;	while (got_char == 0) {		val = cd_base[CD2400_RIR];		/* if no receive interrupt pending wait */		if (!(val & 0x80)) {			continue;		}		/* XXX do we need to suck the entire FIFO contents? */		reoir = pcc2_base->pcc2_sccrxiack; /* receive PIACK */		licr = cd_base[CD2400_LICR];		if (((licr >> 2) & 0x3) == 0) {			/* is the interrupt for us (port 0) */			/* the character is for us. */			isrl = cd_base[CD2400_RISRl];#if 0			if (isrl & 0x01) {				status = BREAK;			}			if (isrl & 0x02) {				status = FRAME;			}			if (isrl & 0x04) {				status = PARITY;			}			if (isrl & 0x08) {				status = OVERFLOW;			}			/* we do not have special characters ;-) */#endif			fifo_cnt = cd_base[CD2400_RFOC];			data = cd_base[CD2400_RDR];			got_char = 1;			cd_base[CD2400_TEOIR] = 0x00;		} else {			data = cd_base[CD2400_RDR];			cd_base[CD2400_TEOIR] = 0x00;		}	}	return (data);}